ASP.NET Core 6 React SPA独立认证模板JWT无效问题求助
问题原因及解决办法
核心原因
模板生成的项目中,JWT认证的签发者(Issuer)验证配置与实际运行的站点URL不匹配。尽管你的应用和API都运行在https://localhost:44412,但默认配置里的Issuer是硬编码的固定值(通常是https://localhost:5001),导致Token的Issuer和API验证的Issuer不一致,触发401错误。
具体修复步骤
1. 修改JWT配置文件
打开项目根目录下的appsettings.json,找到Jwt节点,将Issuer和Audience的值替换为你的实际运行地址https://localhost:44412:
"Jwt": { "Key": "YourSecretKeyHere", "Issuer": "https://localhost:44412", "Audience": "https://localhost:44412" }
2. 确认Token生成逻辑的一致性
打开负责生成JWT的控制器(通常是Controllers/AccountController.cs),检查生成Token的代码,确保Issuer和Audience读取的是appsettings.json中修改后的值:
var tokenDescriptor = new SecurityTokenDescriptor { // 其他配置保持不变 Issuer = _configuration["Jwt:Issuer"], Audience = _configuration["Jwt:Audience"], // 其他配置保持不变 };
3. 清除浏览器缓存
之前登录生成的旧Token(Issuer为默认的https://localhost:5001)可能还存在浏览器本地存储中,需要清除浏览器的LocalStorage或直接清空缓存,重新登录获取新的Token。
模板默认配置的问题说明
模板默认的appsettings.json中JWT的Issuer和Audience是硬编码的https://localhost:5001,微软文档默认假设用户使用默认端口运行项目,因此未提及该修改步骤。当你使用自定义端口(如44412)时,就会出现Issuer不匹配的验证失败。
内容的提问来源于stack exchange,提问作者g.pickardou
相关产品推荐
相关产品推荐

