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

时间:2009-05-07 17:37:58

标签: asp.net-mvc roleprovider

在我的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

中缺少某些内容

2 个答案:

答案 0 :(得分:4)

您在web.config中缺少defaultProvider="yourRoleProviderName"

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

Role.GetRolesForUser("myuser");

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

答案 1 :(得分:1)

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