我正在使用带有特殊角色“必须更改密码”的ASP.NET角色。如果用户的密码超过90天未更改,则会自动添加到此角色。这发生在用户登录过程中。授权规则然后拒绝该角色访问除“更改密码”页面之外的所有应用程序。ASP.NET问题在Cookie中缓存角色
通常情况下,这种方式效果很好,但角色缓存Cookie用于缓存角色时存在问题。会发生什么情况是在登录过程中,密码上次更改日期被检查,如果> 90天,用户被添加到“必须更改密码”角色。在相同的页面请求中,我随后调用Roles.IsUserInRole(“必须更改密码”)来决定是否将用户重定向到更改密码页面。这是崩溃的地方 - 似乎启用角色缓存cookie后,Roles.IsUserInRole(“必须更改密码”)没有意识到我已更改此用户的角色映射,并返回false。但是,在下一页请求中,Roles.IsUserInRole(“必须更改密码”)返回true。
此行为已通过设置cacheRolesInCookie =“false”得到解决,但似乎付出了很高的代价。有其他解决这个问题的方法吗?