【发布时间】:2012-08-22 17:14:39
【问题描述】:
我尝试为我的项目实施基于 ASP.NET 角色的授权,但我从未发现 cookie 保存在客户端浏览器中。我尝试了一些测试代码,例如,
RolePrincipal rolePrincipal = new RolePrincipal(new GenericIdentity("a"));
string text1 = rolePrincipal.ToEncryptedTicket();
在这个简单的 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>
【问题讨论】:
-
查看这篇文章 stackoverflow.com/questions/836043/… 你不应该手动这样做,让 .net 为你整理出来
-
谢谢!我也不想手动执行此操作,但在调用 IsInRole 和 GetRolesForUser 后,我在客户端浏览器中看不到角色的 cookie,所以我做了一些测试,如示例代码,我想我与你分享的帖子有类似的设置,只是我无法生成 cookie...这很奇怪
-
您能否发布与会员资格相关的 web.config 部分 - 很高兴为您仔细检查。
-
非常感谢!我在原帖中更新了 web.config 的内容,大部分都是默认设置。并且 cookie '.TestAUTH' 能够在客户端浏览器中找到..
-
添加了一个答案以明确显示我认为你需要做什么;o)
标签: asp.net forms-authentication roleprovider role-based