0

ASP.NET MVC 3 アプリケーションで SqlRoleManager を使用していますが、これはうまく機能します。私は最近 cacheRolesInCookie オプションを有効にしました。これは明らかに Firefox と Internet Explorer では機能しますが、Chrome では機能しません。Fiddler では、Chrome の応答で Cookie が返されることさえありません。

Web.configで設定したものは次のとおりです。

<roleManager enabled="true" defaultProvider="SqlRoleManager" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieSlidingExpiration="false" cookieTimeout="5" createPersistentCookie="true"  maxCachedResults="255">
  <providers>
    <add name="SqlRoleManager"
         type="System.Web.Security.SqlRoleProvider" 
         connectionStringName="aspnetConnectionString" 
         applicationName="RedactedNamespace.Web" />
  </providers>
</roleManager>

前述したように、Firefox と IE ではうまく機能しますが、Chrome ではうまく機能しません。SQL Server Profiler を見ると、Firefox と IE での最初のリクエストがロールのデータベースにヒットし、Cookie の有効期限が切れるまでキャッシュされることがはっきりとわかります。Chrome は、リクエストごとに 1 回データベースにアクセスします。

また、SqlMembershipProvider を使用して、問題なく FormsAuthenticationTicket から Cookie を (手動で) 設定しています。Cookie はすべてのブラウザで機能します。

Firefox では、Cookie は 4096 バイトに近い (しかしそれ未満) で、HttpOnly です。

ロールを Chrome の Cookie にキャッシュするにはどうすればよいですか?

4

0 に答える 0