ASP.NET Core 8 Web API Cookie认证未授权返回404而非401问题求助
问题解决:ASP.NET Core 8 Web API未授权请求返回404而非401
核心原因
Cookie认证默认在用户未授权时会重定向到登录页面,但Web API不存在对应的登录页路由,因此服务器返回404状态码,而非预期的401。
解决方案
修改Cookie认证配置,禁用重定向逻辑,直接返回401状态码:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { // 拦截登录重定向,返回401 options.Events.OnRedirectToLogin = context => { context.Response.StatusCode = StatusCodes.Status401Unauthorized; return Task.CompletedTask; }; // 可选:处理权限不足场景,返回403 options.Events.OnRedirectToAccessDenied = context => { context.Response.StatusCode = StatusCodes.Status403Forbidden; return Task.CompletedTask; }; });
额外排查点
- 自定义异常处理器影响:如果配置了
app.UseCustomExceptionHandler(),检查该中间件是否错误地将401状态码转换为404。可以暂时注释该中间件测试,若恢复正常则调整异常处理器逻辑,排除对401/403状态码的拦截。 - 中间件顺序:确保
UseAuthentication()和UseAuthorization()的顺序正确,必须在UseRouting()之后、MapControllers()之前。
内容的提问来源于stack exchange,提问作者Maxim Rudolovskii
相关产品推荐
相关产品推荐

