Действительно ли asp.net RoleManager кэширует роли пользователя в файле cookie, если так настроен?

В моем 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?


person Ralph Shillington    schedule 07.05.2009    source источник
comment
В вашем примере кода есть опечатка - cacheRolesInCookie = ture.   -  person Steve    schedule 07.05.2009
comment
У меня работает прямая копия и вставка вашей конфигурации, за исключением того, что я также указываю поставщика по умолчанию.   -  person Kevin Pullin    schedule 13.05.2009
comment
Может быть, эта ссылка описывает ту же проблему, с которой столкнулись вы? connect.microsoft.com/VisualStudio/ обратная связь / подробности / 104688 / У меня тоже есть эта проблема, и я не могу заставить свой пользовательский менеджер ролей сохранять роли в куки.   -  person Jonas    schedule 08.03.2011


Ответы (2)


В вашем web.config отсутствует defaultProvider="yourRoleProviderName".

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

Role.GetRolesForUser("myuser");

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

person Andrej Golcov    schedule 22.11.2010

Было бы лучше, если бы вы изменили значение в вашем cacheRolesInCookie на true.

person Jordan S. Jones    schedule 07.05.2009
comment
опечатки не было в коде, но она появилась, когда я повторно набрал код. - person Ralph Shillington; 08.05.2009