我尝试以声明方式使用基于角色的授权,当未经授权的用户尝试访问页面时,它从不触发异常或向用户显示错误消息。我该怎么做来展示未经授权的消息?这是可能的以声明的方式吗?
使用编码不是一个很好的选择意义我有几个角色,文件夹授权几个角色,而其他文件夹授权一个角色。
感谢
答案 0 :(得分:3)
使用“登录”页面中的以下代码将用户重定向到未经授权的页面或默认页面。
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
答案 1 :(得分:0)
如果授权失败,则会抛出异常。它必须通过。您使用什么进行身份验证?您是否禁用了匿名访问?
答案 2 :(得分:0)
答案 3 :(得分:0)
也可以使用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页面,请说“您无权查看此页面。”