如何解决角色身份验证在asp.net中不起作用
| 我正在使用下面的代码基于用户身份验证访问页面库if (user.FirstOrDefault() == HashedPassword)
{
string roles = \"Member\";
// Create the authentication ticket
FormsAuthenticationTicket authTicket = new
FormsAuthenticationTicket(1,// version
loginName.Text,// user name
DateTime.Now,// creation
DateTime.Now.AddMinutes(60),// Expiration
false,// Persistent
roles); // User data
// Now encrypt the ticket.
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
// Create a cookie and add the encrypted ticket to the
// cookie as data.
HttpCookie authCookie =
new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);
// Add the cookie to the outgoing cookies collection.
Response.Cookies.Add(authCookie);
Response.Redirect(\"/Members/ClientAccount.aspx\");
}
else
{
Response.Redirect(\"signin.aspx\");
}
}
如果登录详细信息正确,则用户将被定向到ClientAccount.aspx,但我希望只有在其角色设置为Admin的情况下才会发生,如下面的web.config文件所示。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<configuration>
<location path=\"members.aspx\">
<system.web>
<authorization>
<allow roles=\"Member\" />
<allow roles=\"Admin\" />
<deny users=\"?\" />
</authorization>
</system.web>
</location>
<location path=\"ClientAccount.aspx\">
<system.web>
<authorization>
<allow roles=\"Admin\" />
<deny roles=\"Member\"/>
<deny users=\"?\" />
</authorization>
</system.web>
</location>
</configuration>
我如何做到这一点?
我猜web.config文件没有查看cookie做授权,所以我在那做错了。
解决方法
仔细检查您相对于web.config的位置路径,我的猜测是问题所在。
目前,拒绝策略确实不需要列出的成员角色。如果您希望也允许该成员进入该页面,则需要换掉拒绝,以允许:
<location path=\"/Members/ClientAccount.aspx\">
...
</location>
当然,您需要做其他事情来代替这条线,您只是在做这个测试,我想是吗?
Response.Redirect(\"/Members/ClientAccount.aspx\");
也就是说,将他们重定向到您不允许其点击的页面。我确定一旦确定不允许成员访问该页面,您将加强这一部分。
您应该确保您的web.config具有以下标记:
<authentication mode=\"Forms\" />
您需要正确配置它,有很多选项:
<authentication mode=\"Forms\">
<forms loginUrl=\"Login.aspx\"
protection=\"All\"
timeout=\"30\"
name=\".ASPXAUTH\"
path=\"/\"
requireSSL=\"false\"
slidingExpiration=\"true\"
defaultUrl=\"default.aspx\"
cookieless=\"UseDeviceProfile\"
enableCrossAppRedirects=\"false\" />
</authentication>
http://msdn.microsoft.com/en-us/library/ff647070.aspx
,嘿,你是说要
<authorization>
<allow roles=\"Admin\" />
<allow roles=\"Member\"/>
<deny users=\"?\" />
</authorization>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。