2009-06-30 10 views
4

Ich versuche, Formularauthentifizierung mit den folgenden Konfigurationseinstellungen zu verwenden. Ich habe cacheRolesInCookie auf wahr gesetzt. Ich stelle jedoch fest, dass die Methode GetRolesForUser des RoleProvider bei jeder Anforderung aufgerufen wird. Ich kann sehen, dass der Cookie .asprales erstellt wird und Daten enthält, aber er scheint ignoriert zu werden.cacheRolesInCookie nicht Caching-Rollen

Hat jemand schon einmal auf dieses Problem gestoßen? Jede Hilfe würde sehr geschätzt werden.

<authentication mode="Forms"> 
     <forms 
      name=".formsauth" 
      loginUrl="~/Login.aspx" 
      defaultUrl="~/Home.aspx" 
      slidingExpiration="true" 
      timeout="20" 
      path="/" 
      /> 
    </authentication> 

    <!-- Membership Provider --> 
    <membership defaultProvider="CustomMembersipProvider"> 
     <providers> 
      <add name="CustomMembersipProvider" 
       type="Company.Membership.CustomMembersipProvider" /> 
     </providers> 
    </membership> 

    <!-- Role Provider --> 
    <roleManager defaultProvider="CustomMembershipRoleProvider" 
      enabled="true" 
      cacheRolesInCookie="true" 
      cookieName=".asproles" 
      cookieTimeout="20" 
      cookieSlidingExpiration="true" 
      cookieProtection="All" createPersistentCookie="true"> 
     <providers> 
      <add name="CustomMembershipRoleProvider" 
       type="Company.Membership.Provider.CustomMembershipRoleProvider" /> 
     </providers> 
    </roleManager> 

Vielen Dank Naren

+0

Ich laufe auch in die gleiche Situation, hast du irgendeine Lösung? –

Antwort

1

, welche Methode der Roleprincipal genannt wird? IsInRole Methode verwendet Cache in .asproles Cookie, aber GetRoles Methode löst den Aufruf Ihres RoleProvider einmal pro Anfrage aus.

0

Nachdem ich meine App auf MVC5 aktualisiert hatte, startete .NET 4.5 das gleiche Problem. Um das Problem zu beheben, müssen Sie den Cookie selbst speichern. Siehe wie here.