如果这样配置,asp.net RoleManager是否真的缓存了cookie中用户的角色?

StackOverflow https://stackoverflow.com/questions/836043

  •  08-07-2019
  •  | 
  •  

在我的web.config中,我将角色管理器配置如下:

<roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" 
cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" 
cookieSlidingExpiration="true" cookieProtection="All">

但是在我们的自定义RoleProvider中,似乎总是调用GetRolesForUser方法,而不是像我预期的那样,RoleManager从其cookie中提供角色。

我们正在使用类似的东西来获取用户的角色:

string[] myroles = Role.GetRolesForUser("myuser");

我是否在配置或使用RoleManager

中缺少某些内容
有帮助吗?

解决方案

您在web.config中缺少 defaultProvider =&quot; yourRoleProviderName&quot;

您是否针对任何用户或仅针对当前用户调用以下方法? Cookie缓存仅适用于当前用户角色。

Role.GetRolesForUser("myuser");

在第一次调用 IsInRole GetRoles 方法后,检查.ASPROLES cookie是否已发送到浏览器。

其他提示

如果要将 cacheRolesInCookie 中的值更改为 true ,它可能会更好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top