ASP.Net应用程序上下文数据共享

时间:2011-09-08 15:06:21

标签: asp.net caching security

我有几个网站使用HTTPModule(包装在dll中)来验证用户并将身份验证对象存储在应用程序缓存中大约10个小时。然后,我在用户计算机上设置了一个包含缓存密钥的cookie。

我现在正在寻找一种方法,允许管理员为任何给定用户清除所有网站的特定缓存对象(有效地将其记录下来),导致他们下次访问时自动重新登录(通过Windows身份验证)这些网站。

我计划在一个管理网站上设置重置登录的工具 - 但出于明显的安全原因,我无法更改其他网站的应用程序缓存。

有没有办法将信号传递给那些使用身份验证模块的网站,以便他们可以清除自己的应用缓存?

注意:我已经阅读了memcached,但如果可能的话,我想避免使用非标准ASP.NET的解决方案。

2 个答案:

答案 0 :(得分:1)

以下是两个想法:

  • 如果它们位于同一台服务器上,您可以在文件系统中包含一个包含所有项目都可以访问的活动登录的文件。
  • 为每个项目添加一个通用处理程序,用于重置给定用户的登录名。当他在那里登出时,从另一个项目中调用它。出于安全原因,您可以添加密码短语。

编辑:我只是想到了一个更好的解决方案:

  • 创建一个中央“身份验证”项目,用于跟踪登录状态。从网站上调用它(例如通过通用处理程序,webservice,...)来注销用户或检查他的状态。

答案 1 :(得分:0)

我选择将代码存储到现有的HTTPModule上。

我检查自定义用户代理字符串,如果存在,我会根据查询字符串清除相关的缓存条目,并在成功时返回自定义HTTP标头。

唯一的额外开销是检查我可以使用的每个请求的用户代理。

通过此设置,我现在可以使用WebRequest对象(从我的中心站点注入我的自定义用户代理字符串),使用该模块向所有站点发送消息。