Действительно ли asp.net RoleManager кэширует роли пользователя в файле cookie, если это настроено? - PullRequest
3 голосов
/ 07 мая 2009

В моем файле 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 ]

4 голосов
/ 22 ноября 2010

Вам не хватает defaultProvider="yourRoleProviderName" в вашем файле web.config.

Вы вызываете метод ниже для любого пользователя или только для текущего пользователя? Кэширование cookie работает только для ролей текущего пользователя.

Role.GetRolesForUser("myuser");

Убедитесь, что файл cookie .ASPROLES отправляется в браузер после первого вызова метода IsInRole или GetRoles.

1 голос
/ 07 мая 2009

Возможно, будет лучше, если вы измените значение в cacheRolesInCookie на true.

...