2009-06-30 11 views
4

J'essaie d'utiliser l'authentification par formulaire avec les paramètres de configuration suivants. J'ai défini cacheRolesInCookie sur true. Cependant, je constate que la méthode GetRolesForUser de RoleProvider est appelée à chaque requête. Je peux voir que le cookie .asproles est créé et contient des données, mais il semble être ignoré.cacheRolesInCookie ne cache pas les rôles

Quelqu'un a-t-il déjà rencontré ce problème? Toute aide serait très appréciée.

<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> 

Un grand merci Naren

+0

Je suis également dans la même situation, avez-vous eu une solution? –

Répondre

1

Quelle méthode de RolePrincipal est appelé? La méthode IsInRole utilise le cache dans le cookie .asproles mais les déclencheurs de la méthode GetRoles appellent votre RoleProvider une fois par requête.

0

Après la mise à niveau de mon application vers MVC5 .Net 4.5 a commencé à avoir le même problème. Pour réparer, vous devrez sauvegarder le cookie vous-même. Voir comment here.

Questions connexes