Cookie中的缓存角色无法正常工作 - ASP.NET

时间:2012-02-09 18:50:43

标签: asp.net cookies roles

我在web.confi中的roleManager看起来像这样。

<roleManager enabled="true" 

    cacheRolesInCookie="true" 
    cookieName=".ASPR0LE3S" 
    cookieTimeout="115" 
    cookieSlidingExpiration="true" 
    cookieProtection="All" 
    createPersistentCookie="false" 
    defaultProvider="CustomizedRoleProvider">               

    <providers>                 
    <add name="CustomizedRoleProvider" 
    type="System.Web.Security.SqlRoleProvider" 
    connectionStringName="MyConn" 
    applicationName="/MyApp"/>              
    </providers>

</roleManager>

我要做的是将我的角色存储在Cookie中。代码是假设存储它但是当我在FireFox中查看cookie时,没有名称为ASPR的cookie ......可能是什么问题?我错过了什么。

3 个答案:

答案 0 :(得分:0)

来自docs

  

当Web.config文件中的CacheRolesInCookie属性设置为true时,每个用户的角色信息都存储在cookie中。当角色管理检查用户是否处于特定角色时,将在调用角色提供程序之前检查角色cookie,以检查数据源中的角色列表。动态更新cookie以缓存最近验证的角色名称。

在您第一次尝试检查角色之前,角色不会存储在cookie中。您可能只是登录并检查cookie,而没有执行任何会导致角色提供程序在数据源中查找用户角色的操作。

答案 1 :(得分:0)

如果您使用的是.NET 4.5,它将无法正常工作,必须自行保存。请参阅示例代码here

答案 2 :(得分:-1)

首先,缓存cookie上的角色并不是那么安全,因为有些人可能会窃取/操纵这些信息并使用它们来改变角色。这是一个关于这个的问题:

Can some hacker steal the cookie from a user and login with that name on a web site?

第二,当您在cookie上存储信息时,这些信息会在每次调用您的网站时来回传递,并增加额外的开销。

如果您的角色太多,浏览器可能无法保存它们,或者其他cookie可能无法保存。在某些情况下,我发现浏览器出现了奇怪的行为,例如崩溃或白页,因为这个cookie达到了极限思考

尝试设置最小可能的Cookie信息。

关于cookie限制的更多信息:
http://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/
What are the current cookie limits in modern browsers?

在登录使用后,cookie上的角色将能够加密查看它们。