【问题标题】:ASP.NET Default page redirect when entering role restricted webpage进入角色受限网页时 ASP.NET 默认页面重定向
【发布时间】: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


【解决方案1】:

使用其他条件,我将进行此更改

   if (!Page.IsPostBack)
{

    if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
       {
          Response.Redirect("Acces page");
        }
       else
       {

        Response.Redirect("/App/Error/UnauthorizedAccess.aspx");
       }
}

【讨论】:

    【解决方案2】:

    有一个 web.config 设置决定了未经授权的用户被重定向到的 URL。

    <authentication mode="Forms">
        <forms loginUrl="~/Account/SignIn" timeout="2880" />
    </authentication>
    

    这是一个登录页面,但它也可以很容易地成为一个包含任何类型消息的页面。

    【讨论】:

    • 是的,我的 webconfig 中也设置了这个设置。如果授权用户访问未经授权的页面(需要更高权限的页面),我想将授权用户重定向到错误页面,并且我找到了在我的登录页面中使用回发​​方法的解决方案。
    • 由你决定。但是为什么不直接更改上面的设置以引用错误页面所在的 URL?
    猜你喜欢
    • 2013-12-26
    • 2012-05-16
    • 1970-01-01
    • 2017-07-18
    • 2012-09-11
    • 2012-04-14
    • 2013-03-07
    • 2015-11-01
    • 1970-01-01
    相关资源
    最近更新 更多