使 JWT(JSON Web 令牌)持续更长时间或 Flutter 应用程序的其他替代方案

Posted

技术标签:

【中文标题】使 JWT(JSON Web 令牌)持续更长时间或 Flutter 应用程序的其他替代方案【英文标题】:Make JWT (JSON Web Token) Last Longer or Other Alternatives For Flutter App 【发布时间】:2019-11-10 15:41:38 【问题描述】:

我有一个使用 Django Rest 框架的 django 后端。我设置了特定于每个用户的 Django Rest API。然后,我还使用 JSON Web Tokens 来通过我的移动 Flutter 前端对用户进行身份验证。

然后我在每个请求中使用登录时获得的令牌,效果很好!我的问题是,当令牌用完时,用户必须再次登录才能使这一切正常工作。

有什么方法可以让 JSON Web Tokens 的持续时间比标准时间更长,比如 5 分钟???

Django 中的令牌代码:

REST_FRAMEWORK = 
    'DEFAULT_PERMISSION_CLASSES' : ('rest_framework.permissions.IsAuthenticated',),
    'DEFAULT_AUTHENTICATION_CLASSES' : ('rest_framework_simplejwt.authentication.JWTAuthentication',),

不同的 URL(也是 get-token url):

urlpatterns = [
  path('admin/', admin.site.urls),
  path('project/', include('project.urls')),
  path('studyplan/', include('studyplan.urls')),
  path('get-token/', TokenObtainPairView.as_view()),
  path('refresh-token/', TokenRefreshView.as_view())
]

【问题讨论】:

【参考方案1】:

看看官方文档:https://github.com/davesque/django-rest-framework-simplejwt 有一个特定的配置可以做到这一点。

SIMPLE_JWT = 
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5)

ACCESS_TOKEN_LIFETIME 一个 datetime.timedelta 对象,它指定访问令牌的有效期。此 timedelta 值在生成令牌期间添加到当前 UTC 时间,以获得令牌的默认“exp”声明值。

【讨论】:

以上是关于使 JWT(JSON Web 令牌)持续更长时间或 Flutter 应用程序的其他替代方案的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON Web 令牌列入黑名单

您可以让 Google OAuth 2.0 访问令牌持续更长时间吗?

如何使用 JWT 令牌使忘记密码更安全?

Json Web 令牌 JWT

JSON Web 令牌 (JWT):我应该使用响应标头还是正文进行令牌传输?

使用 JWT(JSON Web 令牌)设置令牌到期的 RESTful API