gpt4 book ai didi

c# - 表单例份验证 : How to handle unauthorized authenticated user

转载 作者:行者123 更新时间:2023-11-30 14:53:29 25 4
gpt4 key购买 nike

我正在尝试设置一个非常基本的表单例份验证示例。

它正确地将未经身份验证的用户重定向到登录页面并在提交时验证凭据,如果正确则调用:

FormsAuthentication.RedirectFromLoginPage(username.Text, false);

如果用户是在授权部分中指定的用户,他们将获得他们的页面。如果不是,它会将它们毫无错误地弹回登录页面。

如何将正确验证但未经授权的用户重定向到特定错误页面或检测授权错误以在登录页面弹回时显示错误消息?

这是我的 web.config

   <authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="/forms/Login" />
</authentication>
<authorization>
<deny users="?" />
<allow users="username1, username2" />
<deny users="*" />
</authorization>

更新:

根据答案/评论/研究,我有两个可行的解决方案。

  1. 将以下内容放入登录表单的 Page_Load 方法中:

        if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
    {
    // This is an unauthorized, authenticated request...
    Response.Redirect("FailedAuthorization.aspx");
    }

  1. 将以下内容放入您的 Global.aspx 文件中:

    protected void Application_EndRequest(object sender, EventArgs e)
    {
    if (Response.StatusCode == 401)
    {
    //Use the built in 403 Forbidden response
    Response.StatusCode = 403;

    //OR redirect to custom page
    //Response.Redirect("FailedAuthorization.aspx");
    }
    }

    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
    if (Request.IsAuthenticated)
    {
    // Requires ASP.NET >= 4.5
    Response.SuppressFormsAuthenticationRedirect = true;
    }
    }

感谢您为此提供的所有帮助!

最佳答案

不幸的是,这是 ASP.NET 不断出错的事情之一。尽管 MS 和 .NET Framework 团队非常了解身份验证和授权之间的区别,但他们仍然坚持将未授权视为未授权。我不知道为什么会这样。

这只是 FormsAuthentication 模块处理程序的一个怪癖,因为它返回 401 Unauthorized 而不是 403 Forbidden。 (HTTP 标准也以这种方式将身份验证与授权混淆,这无济于事)。

这不是您可以轻易覆盖的东西,因此您唯一的办法就是检查您的登录页面,看看他们是否已经登录,以及他们是否被重定向……这不是万无一失的,但它是一种处理方法。

您没有说明您使用的是哪个版本的 .NET,但如果您使用的是 .net 4.5,那么您还有另一种选择,即使用本文中的 SuppressFormsAuthenticationRedirect 选项:

Forms authentication: disable redirect to the login page

关于c# - 表单例份验证 : How to handle unauthorized authenticated user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com