【发布时间】:2012-02-14 02:14:06
【问题描述】:
我使用的是 VS2005 ASP.NET 2.0。
我正在使用 web.config 文件对特定角色特权网页进行角色管理,并在我的全局(不在管理员文件夹中)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
这将要求用户按返回按钮返回上一页。
这在错误处理方面给我带来了麻烦,因为这不应该发生,而是应该显示一个错误页面。
我是否可以为每个文件夹/页面的默认重定向声明任何解决方案或参数?
附言
我有一个自定义错误标签,它声明带有每个错误代码的错误页面。
当用户进入受角色限制的网站时,我可以使用错误代码吗?
例如
<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");
}
编辑
如果用户未登录并尝试进入受角色限制的网页,我如何将他/她重定向到错误页面?
【问题讨论】:
-
为什么那个 URL需要用户按下按钮返回到上一页?在我看来是对的。 Login.aspx为登录页面,ReturnUrl查询参数为用户登录成功后重定向到的URL。
-
@JonathanWood 如果用户在没有要求角色权限的情况下进入角色受限网页,他/她应该被重定向到错误页面而不是登录页面。
-
那我就无法跟上,因为在上面,您说过当未经授权的用户访问该页面时,他们将被重定向到登录页面,然后您提供了一个看起来像登录页面的 URL对我来说。
-
@JonathanWood 解决方案已解决,但我的意思是我想将未经授权的用户重定向到显示“未经授权的用户”的错误页面,而不是登录页面 URL
标签: c# asp.net .net visual-studio