我试图以声明方式使用基于角色的授权,当未经授权的用户尝试访问页面时,它从不触发异常或向用户显示错误消息。我应该怎么做才能显示未经授权的消息?这是可能的声明方式?基于角色的授权
使用编码不是一个很好的选择意义我有几个角色,文件夹授权几个角色,而其他文件夹授权一个角色。
谢谢
我试图以声明方式使用基于角色的授权,当未经授权的用户尝试访问页面时,它从不触发异常或向用户显示错误消息。我应该怎么做才能显示未经授权的消息?这是可能的声明方式?基于角色的授权
使用编码不是一个很好的选择意义我有几个角色,文件夹授权几个角色,而其他文件夹授权一个角色。
谢谢
在您的登录页面中使用以下代码将用户重定向到未经授权的页面或默认页面。
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack)
return;
if(!Request.IsAuthenticated)
return;
if(!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]) && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(Request.QueryString["ReturnUrl"], User,"GET"))
{
// In Forms Authentication, authenticated but unauthorized requests are converted into a Redirect to the Login page.
// Redirect these to an error page instead.
Response.Redirect("~/UnauthorizedAccess.aspx", false);
}
else
{
Response.Redirect(FormsAuthentication.DefaultUrl, false);
}
}
请参阅此链接发生了什么,并更多信息的图片:
http://www.asp.net/security/tutorials/user-based-authorization-cs
不当使用版权材料。 – 2010-09-04 02:41:41
@Sky Sanders:我想,我已经删除了你指的材料。如果没有,请提供更多详情。 – Greg 2010-11-30 17:15:43
它也可以使用web.config中设置各种文件夹或文件的权限。每个文件夹都可以有一个列表允许或丹尼斯像这样:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrators" />
<allow roles="Random Role" />
<deny users="*" />
<deny users="?" />
</authorization>
</system.web>
</configuration>
然后当有人打,要求他们无权它会重定向到登录页面授权页面。然后,您可以检查它们来自的页面的查询字符串,并可能设置特定于案例的响应,或者至少在它上面有returnURL页面时说“您无权查看此页面”。
你可以使用你的配置吗?它做什么而不是显示错误? – Greg 2010-09-01 20:16:36
你的问题没有明确定义。有明确定义的机制来执行声明性访问控制,但在标准的asp.net中,它们都不会导致503.最可能希望的是非描述性重定向到登录页面。这在许多情况下可能会有问题并且不令人满意。请更清楚地定义你正在尝试做什么以及你迄今采取了哪些措施来实现这一目标。 – 2010-09-04 02:45:54