You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:32:35