【问题标题】:ASP.Net converts 401 to 302 error codesASP.Net 将 401 转换为 302 错误代码
【发布时间】:2011-04-05 18:04:28
【问题描述】:

我有一个自定义处理程序,在某些情况下,我想向用户代理表明他们没有被授权(Http 错误代码 401)

        if (!IsAuthorized(context))
        {
            context.Response.StatusCode = 401;
            context.Response.End();
            return;
        }

当我访问我的处理程序时,我实际上得到了 302 和重定向到表单身份验证页面。有没有办法阻止这种情况发生?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您的情况听起来像是“拒绝访问”而不是“未经授权”。您可以使用 403 即“拒绝访问”的 HTTP 状态代码吗?

    http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

    【讨论】:

    【解决方案2】:

    听起来您已为该页面启用了身份验证。如果是这种情况,那么您的应用会在移交给您的自定义处理程序之前调用身份验证。这就是您看到登录页面的原因。

    处理程序中的 isAuthorized 在处理程序接收调用之前填充。您需要使用一个模块并挂钩到身份验证生命周期事件。见Asp.Net Life Cycle

    【讨论】:

    • 就 IIS 而言,请求已经过身份验证和授权。代码在生命周期的ExecuteHandler步骤中执行。
    猜你喜欢
    • 2015-04-18
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2015-04-13
    • 1970-01-01
    • 2021-11-15
    • 2018-06-27
    相关资源
    最近更新 更多