必须在Program.cs中调用AddJwtBearer()配置JWT认证显式设置TokenValidationParameters各验证开关为true严格匹配issuer/audience字符串正确使用SecurityKey和SigningCredentials并确保Authorization头格式为“Bearer token”。怎么用 AddJwtBearer 配置认证中间件ASP.NET Core 6 默认不启用 JWT 认证必须手动注册并配置 AddJwtBearer。漏掉这步[Authorize] 会静默失败返回 401 但没提示不是代码报错而是整个认证流程压根没启动。必须在 Program.cs 的 builder.Services.AddAuthentication() 后链式调用 AddJwtBearer()不能只写 AddAuthentication()TokenValidationParameters 里 ValidateIssuerSigningKey、ValidateAudience 等开关默认是 false生产环境务必显式设为 true否则签名无效的 token 也能过密钥必须用 SecurityKey 实例比如 new SymmetricSecurityKey(Encoding.UTF8.GetBytes(your-32-byte-secret))直接传字符串会编译失败如果用 RS256要加载 RSA 实例别误用 SymmetricSecurityKey否则运行时报 ArgumentException: IDX10623生成 token 时 SigningCredentials 和 EncryptingCredentials 别混用JWT 分签名sign和加密encrypt两层.NET 的 System.IdentityModel.Tokens.Jwt 默认只做签名加密封装要用 JWE但绝大多数 Web API 只需要签名版 JWTJWS强行加密反而让前端解析不了。生成 token 用 new JwtSecurityToken(..., signingCredentials: creds) 就够了encryptingCredentials 参数留空或删掉SigningCredentials 的算法必须和 AddJwtBearer 配置的 TokenValidationParameters.ValidateAlgorithm 一致比如都用 SecurityAlgorithms.HmacSha256别把密钥硬编码在代码里改用 IConfiguration 读取例如 builder.Configuration[Jwt:Key]否则部署到不同环境要改代码过期时间用 expires: DateTime.UtcNow.AddMinutes(30)别用 DateTime.Now时区问题导致 token 提前失效HttpContext.User.Identity.IsAuthenticated 一直是 false检查 issuer/audience 是否严格匹配这是最常被忽略的点token 里的 ississuer和 audaudience字段必须和 AddJwtBearer 配置中 ValidIssuer、ValidAudience 完全一致包括末尾斜杠、大小写一个字符不对就认证失败且不会报具体原因。 唱鸭 音乐创作全流程的AI自动作曲工具集 AI 辅助作词、AI 自动作曲、编曲、混音于一体