2009-06-30 64 views
4

我正嘗試使用表單身份驗證和以下配置設置。 我已將cacheRolesInCookie設置爲true。但是,我發現每個請求都會調用RoleProvider的GetRolesForUser方法。我可以看到cookie .asproles已創建並且包含數據,但似乎被忽略。cacheRolesInCookie未緩存角色

有沒有人遇到過這個問題?任何幫助將非常感激。

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

非常感謝 那仁

+0

我也遇到同樣的情況,你有什麼解決方案嗎? – 2014-08-27 09:27:58

回答

1

什麼方法RolePrincipal被稱爲? IsInRole方法在.asproles cookie中使用緩存,但GetRoles方法會根據請求觸發一次到您的RoleProvider的調用。

0

將我的應用程序升級到MVC5後,.NET 4.5開始出現同樣的問題。要解決您的問題,您必須自行保存cookie。請參閱here