我使用 Auth0 作为身份验证系统创建了一个以 Angular 作为前端、NestJs 作为后端的应用程序。
在 Angular 中,我放置了身份验证按钮,并且它可以正常工作。当用户进行身份验证时,会正确发出对 /token 的请求,并且该值用于将其添加到向 NestJS API 发出请求的标头中。它工作正常,但是,当向 /token 发出新请求时(例如刷新页面时),通过标头发送令牌时,我收到来自 NestJS 的 401 错误。
不得不说NestJS使用Passport JWT作为身份验证策略。
我无法确定为什么它对后续请求不起作用(但对第一个请求起作用)。我是不是错过了什么?
我不确定为什么在正确形成“Authorization”标头并将其发送到 API 服务器的情况下会收到“401 Unauthorized”。
但一般来说,我认为您不应该如此频繁地请求新令牌(例如每次重新加载页面),而只能在当前令牌过期或早一点时请求。
因此,一旦您在任何端点上出现 401 错误(可能除了设置中的
GET /token
等),就是请求新令牌的正确时机。在某些情况下,基于编码到令牌中的 iat (issued at)
属性之类的内容,可能会更快一些。您可以在这里查看您的内容 https://jwt.io.