0

我在 ASP.NET MVC 3 应用程序中使用 SqlRoleManager,效果很好。我最近启用了 cacheRolesInCookie 选项,它显然在 Firefox 和 Internet Explorer 中有效,但在 Chrome 中无效。在 Fiddler 中,我什至没有看到 cookie 与 Chrome 中的响应一起返回。

这是我在 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 会为每个请求访问一次数据库。

我还在使用 SqlMembershipProvider 并从 FormsAuthenticationTicket 设置 cookie(手动),没有任何问题;cookie 适用于所有浏览器。

在 Firefox 中,cookie 接近(但小于)4096 字节,并且是 HttpOnly。

如何让角色缓存在 Chrome 的 cookie 中?

4

0 回答 0