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

使用Postman测试ASP.NET Core 8 Web API Cookie认证遇404问题排查

问题排查与解决方案

一、先确认端点路由是否正常

  1. 检查authtest所在控制器的路由配置:

    • 确保控制器带有[ApiController]属性,且[Route]模板正确(比如[Route("api/[controller]")]);端点方法的[HttpGet]/[HttpPost]等属性也要匹配你请求的路径,比如[HttpGet("authtest")]。
    • 启动API后通过/swagger(若已配置)确认authtest的路由地址,和Postman请求的地址完全比对,排除拼写错误。
  2. 核对ASP.NET Core中间件顺序:

    • Program.cs里的中间件必须遵循以下顺序,否则会导致路由匹配与授权逻辑冲突:
      app.UseRouting();
      app.UseAuthorization(); // 必须在UseRouting之后、UseEndpoints之前
      app.UseEndpoints(endpoints => {
          endpoints.MapControllers();
      });
      

二、Cookie相关问题排查

  1. 本地测试阶段移除Secure属性:

    • 你获取的Cookie带有Secure标记,该属性要求仅在HTTPS请求下才会发送Cookie。若本地API用HTTP运行,Postman不会传递此Cookie。可在API的Cookie认证配置中临时关闭:
      builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
          .AddCookie(options => {
              options.Cookie.SecurePolicy = CookieSecurePolicy.None; // 生产环境需改回Always
              options.Cookie.HttpOnly = true;
              options.Cookie.Path = "/";
          });
      
    • 重新登录获取Cookie后再测试authtest端点。
  2. 规范Postman的Cookie设置方式:

    • 不要手动在Headers里拼接Cookie头,改用Postman自带的Cookie管理器:
      1. 点击请求右上角的Cookies按钮;
      2. 添加localhost(或你的API域名),再录入Cookie名称Auth和对应值,无需手动添加Path/Secure等属性,Postman会自动处理。

三、Authorization标签的AuthType选择

因为你用的是Cookie授权,认证信息通过Cookie头传递,所以在Postman的Authorization标签里直接选No Auth即可。Basic Auth是通过Authorization: Basic xxx头传递信息,和Cookie授权无关,无需选择。

额外检查

如果[Authorize]特性指定了自定义策略(比如[Authorize(Policy = "AdminOnly")]),要确保登录用户满足策略要求,否则会返回403 Forbidden,但不会是404。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:02:48