在我的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
中缺少某些内容答案 0 :(得分:4)
您在web.config中缺少defaultProvider="yourRoleProviderName"
。
您是否针对任何用户或仅针对当前用户调用以下方法? Cookie缓存仅适用于当前用户角色。
Role.GetRolesForUser("myuser");
在第一次调用IsInRole
或GetRoles
方法后,检查.ASPROLES Cookie是否已发送到浏览器。
答案 1 :(得分:1)
如果您要将cacheRolesInCookie
中的值更改为true
,这可能会更好。