缓存Cookie中的角色不起作用-ASP.NET

缓存Cookie中的角色不起作用-ASP.NET,asp.net,cookies,roles,Asp.net,Cookies,Roles,我在web.confi中的角色管理器如下所示 <roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPR0LE3S" cookieTimeout="115" cookieSlidingExpiration="true" cookieProtection="All" createPersistentCookie="false" defau

我在web.confi中的角色管理器如下所示

<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。。。有什么问题吗?我遗漏了什么。

首先,在cookie上缓存角色并不安全,因为有人可能窃取/操纵这些信息,并使用它们来更改角色。这里有一个问题:

第二,当你在cookies上存储信息时,这些信息会在每次访问你的站点时来回传播,并增加额外的开销

如果您的角色太多,浏览器可能无法保存它们,或者其他cookie可能无法保存。在某些情况下,我会从浏览器中看到奇怪的行为,例如崩溃,或者由于此cookie达到限制而出现白页

尝试设置尽可能少的cookie信息

有关cookie限制的更多信息:

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

来自:

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


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

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

要查看这些代码,必须先登录。你登录了吗?我已登录,但无法看到它。但即使我没有登录,我仍然可以看到它。我的猜测是,它从未被创造过。可能是因为我有太多的角色,它超过了大小限制吗?我认为这不是因为它是的,如果你为用户使用了太多的角色,用户可以避免,因为cookie有限制,浏览器无法保存它,甚至崩溃。此外,页面延迟太多,也不安全。我不知道ASP.NET角色提供程序在将角色存储在单独的cookie中时如何工作,但不将此类信息存储在cookie中的古老建议过于笼统。有很多方法可以保护cookie不受中间人和劫持技术的影响,考虑到适当的安全预防措施,这不一定是个坏主意。@Chris好的,我接受你的论点-这里的问题是,如果你进行了良好的安全加密,你会得到太大的cookie-可能浏览器拒绝它,并且会产生很大的开销。所以,如果你得到了一个,你就会失去另一个。至少现在我的应用程序在我们的网络上是本地的,所以安全性是一个较少的问题+开销。我大约有10个角色。@Thecrocodilehunter你从这个缓存中得不到多少,只需要再查找一次数据库。@Aristos我认为这真的会加快我的电脑的速度,因为它会先在Cookies中查找角色,如果找不到,然后会进行数据库命中,在第一次尝试检查角色之前,大大减少了时间。cookie这到底意味着什么?这和登录不一样吗?顺便说一句,我后来确实看到了cookie,但事实上我的应用程序很慢,这意味着它很可能根本不检查cookie。