从表单认证应用的web api返回401消息

本文关键字:api 返回 消息 web 表单 认证 应用 | 更新日期: 2023-09-27 18:08:08

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

我正在使用web api 5.2.3,它看起来不像响应。SuppressFormsAuthenticationRedirect = true;工作了。

我也试图覆盖HandleUnauthorizedRequest没有运气,它仍然将我重定向到登录页面。谢谢你的帮助

从表单认证应用的web api返回401消息

通常情况下,我使用ASP。该框架对Web APi和MVC使用相同的控制器类型。然而,这是我如何处理这个问题,在服务。我的启动类的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); 
   } 
};

让我知道这是否适合你