如何处理这样的问题:用户数据处于会话状态(HttpContext),有人在数据库中为他们更改了角色,而现在您的会话(包含角色列表)与数据库中的更改不同步?你不想每次都访问数据库来检查角色。
这是如何处理的?
发布于 2012-02-10 01:37:10
使用SqlCacheDependency监视包含角色的表。当表发生更改时,缓存将失效。然后在缓存中查询角色,而不是数据库。
http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx
发布于 2012-02-10 00:46:00
假设更改是在同一应用程序中进行的,您可以在静态属性(可能是字典)上设置某种信号量。然后,在begin request事件的httpmodule中,检查属性并根据属性值刷新会话数据。
确保在属性上使用锁/监视器,以防止多个线程同时访问它。
发布于 2012-02-10 00:50:04
对用户会话变量的更改必须由用户启动。据我所知,如果用户当前登录,并且管理员更改了他们的角色,则没有办法更新他们现有的会话(而用户既不加载新页面,也不开始新请求)。对于角色/和身份验证项,出于安全原因,您可能希望在每次加载新页面时执行检查。这样,如果您阻止访问,效果是立即的,并且在您关闭访问后,它们不会保持会话活动。
一个对一行数据执行基本select的小检查不应该杀死您的服务器,除非您收到数十万个对性能不足的服务器的请求
https://stackoverflow.com/questions/9214895
复制相似问题