ASP.NET Core JWT 身份验证以保护 webAPI [Authorize] 属性错误 401 Unauthorized
Posted
技术标签:
【中文标题】ASP.NET Core JWT 身份验证以保护 webAPI [Authorize] 属性错误 401 Unauthorized【英文标题】:ASP.NET Core JWT Authentication to secure webAPI [Authorize] attribute Error 401 Unauthorized 【发布时间】:2021-05-20 13:21:31 【问题描述】:我开发 API POST 并且它工作正常,但是当我添加 [Authorize] 属性时,即使我在标题中添加正确的令牌,邮递员也会收到 401 Unauthorized
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[HttpPost]
public async Task<ActionResult> Post([FromBody] CViewModel cVM)
// to do
我只想使用 JWT TOKEN 保护我的 API, API 身份验证正常工作并生成令牌,但我不知道为什么添加 [Authorize] 属性我得到错误 401 Unauthorized 在我的 POST API 中。
谢谢!
【问题讨论】:
这能回答你的问题吗? Web api core returns 404 when adding Authorize attribute 谢谢,但没有,当我更改为 [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] 我得到 401 Unauthorized 【参考方案1】:添加[Authorize]
时,只有携带token才能成功访问该动作。一种可能性是 url 与这条路线无关。但更重要的原因是您没有正确配置登录路径,或者登录路径不存在。所以你可以在启动时检查配置。
【讨论】:
谢谢你的回复,我有在 postMan 中工作的 API,没有 [Authorize] 所以 URL 是正确的,我用 POSTMAN 测试它我只想在数据库中添加对象,当我写 [Authorize] (AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] 我得到 401 Unauthorized 即使我在标头中添加了令牌:/ 我编辑了我的问题并添加了我的启动 使用Jwt认证方案时如何发送token? 我有用于身份验证的 api 帖子,接受电子邮件和密码并返回我现在添加的令牌问题中的代码【参考方案2】:问题是我在启动和生成令牌方法中使用了不同的密钥
【讨论】:
以上是关于ASP.NET Core JWT 身份验证以保护 webAPI [Authorize] 属性错误 401 Unauthorized的主要内容,如果未能解决你的问题,请参考以下文章
同一站点中的 asp net core 2.0 JWT 和 Openid Connect 身份验证
ASP.NET Core JWT/Windows 身份验证 HTTP 400 错误