无法使用JWT令牌调用.NET Core API的问题求助
正确调用带JWT认证的API方式
你的接口添加[Authorize]后无法命中,核心问题是JWT令牌传递方式不符合认证中间件的要求,以下是标准解决方案:
1. 标准JWT传递方式(必须)
JWT令牌需要通过HTTP请求头传递,格式为:
Authorization: Bearer <你的JWT令牌字符串>
示例:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6InZhc2FudGgiLCJuYmYiOjE2OTYzMTUyMDAsImV4cCI6MTY5NjMxODgwMCwiaWF0IjoxNjk2MzE1MjAwfQ.xxxxxxx
2. 完整调用步骤
调用get_token_step2接口时,需同时满足:
- 请求方法为POST
- 请求Body中正常传入
AuthenticateModel对应的JSON数据(比如{"schoolId":"xxx","password":"xxx"}这类结构) - 必须在请求头中添加上述格式的
Authorization字段
3. 你现有尝试的问题分析
从常见错误场景判断,你两种尝试的问题大概率是:
- 若尝试1是把JWT放在请求Body里:默认JWT认证中间件不会从Body读取令牌,因此认证失败
- 若尝试2是把JWT作为URL参数传递:默认配置下,认证中间件也不会解析URL参数里的令牌,需额外配置且不推荐这种不安全的方式
4. 额外排查点
- 用JWT解析工具验证你的令牌是否有效(签名正确、未过期、Issuer/Audience与后端配置一致)
- 确保后端已正确配置JWT认证中间件(比如在
Program.cs中添加AddJwtBearer,并启用UseAuthentication()和UseAuthorization()) - 建议在接口的catch块中添加日志输出,方便查看认证失败的具体异常信息
内容的提问来源于stack exchange,提问作者Vasanth R
相关产品推荐
相关产品推荐

