角色与用户会话不同步

时间:2012-02-09 16:37:16

标签: asp.net .net asp.net-mvc asp.net-mvc-3

如何处理会话状态(HttpContext)中有用户数据的问题以及有人在数据库中更改角色的问题,现在您的会话中包含角色列表与更改中的更改不同步D B?您不希望每次都检查角色。

这是如何处理的?

3 个答案:

答案 0 :(得分:0)

假设已在同一个应用程序中进行了更改,您可以在静态属性(可能是字典)上设置排序信号量。然后,在开始请求事件的httpmodule中,检查属性并根据属性值刷新会话数据。

请务必在属性上使用锁定/监视器,以防止多个线程同时访问它。

答案 1 :(得分:0)

用户的会话变量的更改必须由用户启动。如果用户当前已登录,管理员更改其角色,更新现有会话(用户无需加载新页面或开始新请求),我就无法做到这一点。对于角色/和身份验证项,出于安全原因,您可能希望每次加载新页时都执行检查。这样,如果您阻止访问,则效果立即生效,并且在您关闭访问权限后,它们不会保持会话处于活动状态。

对一行数据执行基本选择的小检查不应该杀死您的服务器,除非您收到数十万个服务器功能不足的请求

答案 2 :(得分:0)

使用SqlCacheDependency监视具有角色的表。当表更改时,缓存无效。然后,您可以在缓存中查询角色,而不是db。

http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx