在ASP.Net / ASP.Net核心WebAPI中,
当客户端/浏览器尝试访问使用 [Authorized] 属性修饰的WebAPI endpoints 时 . 它获取一个 302-Found 状态代码,其中包含对登录页面的重定向响应,而不是 401-Unauthorized 用于未经授权的请求 .
注意:我注意到 AuthorizeAttribute 过滤器中的 Fail(AuthorizationContext context) 方法将响应代码设置为 401-Unauthorized ,但最终浏览器获得 302-Found 响应 .
如何发送 401 响应而不是 302 ?
UPDATE: Update the question with ASP.NET Core
1 回答
终于找到了解决方案 .
重定向发生在 Cookie Authentication 模块中 . 默认情况下,其
LoginPath
属性设置为/Account/Login
. 如果设置为PathString.Empty
,则会将状态代码保留为401-Unauthorized
,而不将其更改为302-Found
.在 Startup.cs 中更改
CookieAuthenticationOptions
,如下所示:LoginPath
属性的XML文档:UPDATE: 正如@swdon指出的那样, ASP.NET Core 2.x 有不同的做法 .
以下是link 1的接受答案:
截至 ASP.NET Core 2.x :