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

如何在ASP.NET Core MVC Web客户端生成JWT Token并在Razor视图展示

排查ASP.NET Core MVC客户端无法获取JWT Token的问题

以下是针对你的问题的具体排查步骤:

  • 核对客户端请求的参数与格式
    MVC客户端一般通过HttpClient或表单提交请求认证接口,务必确认:

    • 请求方法为POST,参数名和接口接收的字段完全匹配(比如username、password);
    • 若用表单提交,确保表单name属性正确,请求内容类型为application/x-www-form-urlencoded;
    • 若用HttpClient,要正确构造请求内容,示例代码:
      var content = new FormUrlEncodedContent(new[]
      {
          new KeyValuePair<string, string>("username", inputUsername),
          new KeyValuePair<string, string>("password", inputPassword)
      });
      var response = await httpClient.PostAsync("/api/Course/Authenticate", content);
      

    直接对比Postman的请求详情(Headers、Body),保证MVC客户端的请求和Postman完全一致。

  • 验证路由与跨域配置(多项目场景)

    • 如果API和MVC客户端是独立项目/不同端口,检查API是否配置了CORS策略,允许MVC客户端的域名访问;
    • 确认Authenticate接口的路由正确,MVC客户端请求的URL要和Swagger中显示的路由完全匹配。
  • 捕获并分析客户端错误信息
    在MVC客户端中主动获取响应的错误内容,示例代码:

    if (!response.IsSuccessStatusCode)
    {
        var errorMsg = await response.Content.ReadAsStringAsync();
        // 输出或记录errorMsg,定位具体错误原因
    }
    

    同时查看浏览器控制台的网络请求,检查状态码(比如404路由错误、400参数错误、401权限问题)和响应内容。

  • 确认JWT相关配置与依赖

    • 检查MVC项目是否引用了Microsoft.AspNetCore.Authentication.JwtBearer包,且在Program.cs中正确配置认证服务:
      builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
          .AddJwtBearer(options =>
          {
              options.TokenValidationParameters = new TokenValidationParameters
              {
                  ValidateIssuer = true,
                  ValidateAudience = true,
                  ValidateLifetime = true,
                  ValidateIssuerSigningKey = true,
                  ValidIssuer = builder.Configuration["Jwt:Issuer"],
                  ValidAudience = builder.Configuration["Jwt:Audience"],
                  IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
              };
          });
      
    • 保证MVC项目appsettings.json中的JWT配置(Issuer、Audience、Key)和API项目完全一致。
  • 排查Cookie与请求头冲突
    如果MVC项目启用了Cookie认证,请求可能会自动携带Cookie,若API的Authenticate接口仅接受匿名请求,需要:

    • 确保API的Authenticate接口标注了[AllowAnonymous]特性;
    • 或在MVC客户端请求时,清除不必要的Cookie,避免干扰认证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:52:13