2009-05-07 5 views
3

In meiner web.config habe ich die Rolle Manager wie folgt konfigurieren:Passt der asp.net RoleManager wirklich die Rollen für einen Benutzer in einem Cookie, wenn er so konfiguriert ist?

<roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" 
cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" 
cookieSlidingExpiration="true" cookieProtection="All"> 

jedoch in unserer eigenen Roleprovider wäre es scheint, dass die GetRolesForUser Methode immer dann aufgerufen wird, anstatt als ich erwartet hätte, die Rolemanager Servieren der Rollen von seinem Cookie.

Wir verwenden so etwas wie die Rollen für einen Benutzer zu erhalten:

string[] myroles = Role.GetRolesForUser("myuser"); 

Gibt es etwas, das ich in der Konfiguration fehlen, oder bei der Verwendung des Rolemanager

+1

In Ihrem Codebeispiel ist ein Tippfehler enthalten - cacheRolesInCookie = "ture". –

+0

Ein direktes Kopieren und Einfügen Ihrer Konfiguration funktioniert für mich, außer dass ich auch einen Standardanbieter angegeben habe. –

+0

Vielleicht beschreibt dieser Link das gleiche Problem, das Sie erfahren haben? http://connect.microsoft.com/VisualStudio/feedback/details/104688/rolemanager-cacherolesinchookie-option-does-not-work Ich habe auch dieses Problem, und ich kann nicht meinen benutzerdefinierten rolemanager die Rollen in einem zu speichern Plätzchen. –

Antwort

4

Sie vermissen defaultProvider="yourRoleProviderName" in Ihrer web.config.

Rufen Sie die folgende Methode für jeden Benutzer oder nur für den aktuellen Benutzer auf? Cookie-Caching funktioniert nur für aktuelle Benutzerrollen.

Role.GetRolesForUser("myuser"); 

Überprüfen Sie, dass Cookie .ASPROLES nach der Faust Aufruf von IsInRole oder GetRoles Methode Browser gesendet.

1

Es könnte funktionieren besser, wenn Sie den Wert in cacheRolesInCookie zu true ändern.

+0

der Tippfehler war nicht im Code, sondern eingeführt, wenn ich den Code neu eintippte. –