【问题标题】:Do I need to check JWT expiration on client side?我需要在客户端检查 JWT 过期吗?
【发布时间】:2019-07-03 17:00:56
【问题描述】:

我正在使用 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. 向服务器发送请求 刷新令牌以获取新的访问令牌,然后前端将其存储 到本地存储。
  4. 再次发送请求。

这是不好的方式吗?

抱歉,我的英语不好......

【问题讨论】:

    标签: reactjs django-rest-framework react-redux jwt django-rest-framework-jwt


    【解决方案1】:

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

    的形式告诉您令牌是否无效有效

    【讨论】:

    • 谢谢。所以我不需要像我的问题示例那样检查令牌过期,对吧?但我仍然不知道为什么有一些教程在客户端检查令牌过期。为什么?
    • 您不需要检查令牌本身。您确实需要处理令牌可能已过期或由于某种原因无效的情况。这应该以 HttpStatus 代码的形式从服务器端传达给您。
    猜你喜欢
    • 2021-07-26
    • 2018-11-28
    • 2016-09-17
    • 2011-03-23
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 2015-07-11
    相关资源
    最近更新 更多