如果用户未登录,我尝试从Web Api返回401,而不是在api方法上使用Authorize属性时将其发送到登录页面。 我已经看到了几个关于如何解决这个问题的想法,但没有一个对我有用。
我正在使用web api 5.2.3并且它看起来不像response.SuppressFormsAuthenticationRedirect = true; 已经工作了。
我还试图在没有运气的情况下覆盖HandleUnauthorizedRequest, 它仍然会将我重定向到登录页面。 谢谢你的帮助
答案 0 :(得分:0)
通常,我使用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);
}
};
如果这对您有用,请告诉我