【问题标题】:Return 401 message from web api in forms authentication app从表单身份验证应用程序中的 Web api 返回 401 消息
【发布时间】:2017-01-28 15:22:27
【问题描述】:

如果用户未登录,而不是在 api 方法上使用 Authorize 属性时将其发送到登录页面,我会尝试从我的 Web Api 返回 401。 我已经看到了一些关于如何解决这个问题的想法,但没有一个对我有用。

我使用的是 web api 5.2.3,它看起来不像 response.SuppressFormsAuthenticationRedirect = true; 不再工作了。

我也尝试过重写 HandleUnauthorizedRequest,但没有成功, 它仍然将我重定向到登录页面。 感谢您的帮助

【问题讨论】:

标签: c# asp.net asp.net-web-api forms-authentication


【解决方案1】:

通常,我使用 ASP.Net 核心,并且该框架对 Web APi 和 MVC 使用相同的控制器类型。 但是,这就是我在启动类的 services.AddIdentity 方法中处理该问题的方式

config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents()
{
    OnRedirectToLogin = ctx =>
    {
        if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200)
        {
            ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
        }
        else
        {
            ctx.Response.Redirect(ctx.RedirectUri); 
        }
            return Task.FromResult(0); 
   } 
};

让我知道这是否适合你

【讨论】:

  • 是的,我没有使用 asp.net 核心。这是一个 MVC5 应用程序。不过感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 2018-07-05
  • 2014-01-26
  • 1970-01-01
  • 2013-04-06
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多