我试过为我的项目实现ASP.NET基于角色的授权,但我从未发现cookie保存在客户端浏览器中。我尝试了一些测试代码一样,用于缓存RolePrincipal的Cookie文本的长度始终大于4096
还有在这个如此简单的RolePrincipal对象中没有的角色和Roles.CookieProtectionValue设置为“无”。然而,text1的长度是4,688,大于4,096,因此无法将cookie推入客户端浏览器。
它没有任何意义,否则无法使用cookie来缓存角色。
它有什么问题?
感谢
这里的相关章节的web.config
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" name=".TestAUTH"/>
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true" cookieName=".TestROLE" cookieProtection="None" cacheRolesInCookie="true" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="false" >
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<!--<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />-->
</providers>
</roleManager>
检查这个帖子http://stackoverflow.com/questions/836043/does-the-asp-net-rolemanager-really-cache-the-roles-for-a-user-in- a-cookie-if-so你不应该手动做这个让.net为你排序 – bUKaneer
谢谢!我不想手动执行此操作,但在我调用IsInRole和GetRolesForUser后,我无法在客户端浏览器中查看角色的Cookie,因此我做了一些测试,如示例代码,我认为我对您分享的帖子有类似的设置,只是我无法获取生成的cookie ...这很奇怪 – Johnny
你可以发布你的web.config有关会员资格的部分 - 很高兴再次检查它。 – bUKaneer