2009-06-30 8 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> 

感謝 Naren

+0

私も同じ状況に陥っています。解決策はありましたか? –

答えて

1

RolePrincipalのどのメソッドが呼ばれているのですか? IsInRoleメソッドはキャッシュを.asprolesクッキーに使用しますが、GetRolesメソッドは、要求ごとに1回RoleProviderを呼び出します。

0

私はMVC5に私のアプリをアップグレードした後、.Net 4.5の同じ問題が発生しました。修正するには、自分でクッキーを保存する必要があります。どのようにhereを参照してください。

関連する問題