我正在使用带有自定义角色提供程序的ASP.NET 站点地图来生成站点菜单,该菜单根据用户角色显示可用链接。
如果在用户登录时角色没有改变,这很好用。当用户登录时角色发生改变时,菜单不会自动更新(我已经检查过,并且 Roles.GetRolesForUser() 是仅在登录时调用)。这导致用户可以访问他无权查看的站点区域。这种访问不仅是可视的(以显示菜单项的形式),而且 Web.config 中定义的访问限制也没有被强制执行。
有没有办法在角色更改时触发菜单/访问控制刷新?还是我需要强制注销?
提前致谢
编辑:我刚刚意识到我启用了角色管理器 cacheRolesInCookie,这意味着 GetRolesForUser() 只被命中一次,并且使用 cookie 进行了任何进一步的角色检查。有什么方法可以以编程方式刷新 cookie,还是我必须关闭缓存?也许只是删除cookie会解决它?