我正在使用VS2005 ASP.NET 2.0。
我正在使用web.config文件进行特定角色特权网页的角色管理,我的全局(不在Administrator文件夹)web.config文件中包含以下代码:
<location path="Administrator">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny roles="User"/>
<deny users="?" />
</authorization>
</system.web>
</location>
网页可以受到角色限制,从而禁止没有管理员角色的用户访问。
但是,当任何角色的用户尝试进入受限制的网页时,他们将自动重定向到具有URL的登录页面,如
http://localhost:2232/App/Login.aspx?ReturnUrl=%2fSoD%2fAdministrator%2fUserMgmt.aspx
这将要求用户按回按钮返回上一页。
这导致我在错误处理方面遇到麻烦,因为这不应该发生,而是应该显示错误页面。
我是否知道我是否可以为每个文件夹/页面的默认重定向声明任何解决方案或参数?
P.S。
我有一个自定义错误标记,用于声明错误页面并附上每个错误代码。
当用户进入角色限制网站时,是否存在可以使用的错误代码?
E.g。
<customErrors defaultRedirect="~/Error/UnexpectedError.aspx" mode="On">
<error statusCode="404" redirect="~/Error/PageNotFound.aspx"/>
</customErrors>
将 LOGGED IN 用户重定向到错误页面的解决方案:
if (!Page.IsPostBack)
{
if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
Response.Redirect("/App/Error/UnauthorizedAccess.aspx");
}
修改
如果用户未登录并尝试进入受角色限制的网页,如何将用户重定向到错误页面?
答案 0 :(得分:1)
使用其他条件我正在进行此更改
if (!Page.IsPostBack)
{
if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
{
Response.Redirect("Acces page");
}
else
{
Response.Redirect("/App/Error/UnauthorizedAccess.aspx");
}
}
答案 1 :(得分:0)
有一个web.config设置,用于确定未经授权的用户被重定向到的URL。
<authentication mode="Forms">
<forms loginUrl="~/Account/SignIn" timeout="2880" />
</authentication>
这是一个登录页面,但它可以很容易地成为包含任何类型消息的页面。