O asp.net RoleManager realmente armazenar em cache os papéis para um usuário em um cookie se assim configurado?
-
08-07-2019 - |
Pergunta
Na minha web.config Tenho a Role Manager configurado da seguinte forma:
<roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES"
cookieTimeout="30" cookiePath="/" cookieRequireSSL="false"
cookieSlidingExpiration="true" cookieProtection="All">
No entanto, em nosso RoleProvider costume que seria parece que o método GetRolesForUser está sempre sendo chamado, e não como eu teria esperado, o RoleManager servindo-se os papéis de seu cookie.
Estamos usando algo parecido para obter os papéis para um usuário:
string[] myroles = Role.GetRolesForUser("myuser");
Existe algo que eu estou faltando na configuração ou no uso do RoleManager
Solução
Está faltando defaultProvider="yourRoleProviderName"
em seu web.config.
Você chama o método abaixo para qualquer usuário ou somente para usuário atual? caching de cookie funciona apenas para funções de usuários atuais.
Role.GetRolesForUser("myuser");
Verifique se bolinho .ASPROLES é enviado para o navegador após a chamada punho de IsInRole
ou GetRoles
método.
Outras dicas
Ele pode funcionar melhor se fosse para mudar o valor na sua cacheRolesInCookie
para true
.