2

我正在使用 Django REST 框架、react 和 redux 开发网站,例如分类广告。我有一个关于 JWT 身份验证的问题。我想使用 djangorestframework_simplejwt 进行身份验证,并且我检查了一些教程。我看到很多教程都在客户端检查访问令牌,如下所示

export function isAccessTokenExpired(state) {
 if (state.access && state.access.exp) {
   return 1000 * state.access.exp - (new Date()).getTime() < 5000
 }
 return true
}

并刷新令牌。但我不知道为什么。因为每次我们收到带有过期访问令牌的 HTTP 401 Unauthorized 错误时,只需使用刷新令牌请求新的访问令牌。

我认为的工作流程是

  1. 向服务器发送带有访问令牌的请求,以获取只有经过身份验证的用户才能看到的页面。
  2. 如果访问令牌过期,前端将收到 HTTP 401 Unauthorized 错误。
  3. 向服务器发送带有刷新令牌的请求以获取新的访问令牌,然后前端将其存储到 localStorage。
  4. 再次发送请求。

这是不好的方式吗?

我为我糟糕的英语道歉......

4

1 回答 1

3

您不应该在客户端检查 JWT。JWT 基本上是服务器提供给您的“假定”有效的令牌。当你发回令牌时,服务器会以 Http Status Code 401 - Unauthorized 的形式告诉你令牌是否无效

于 2019-02-09T18:57:01.430 回答