首页 > 解决方案 > Django Rest Framework JWT 刷新令牌一次性使用

问题描述

我正在使用 jwt 进行身份验证,并且我希望允许刷新令牌,但似乎刷新令牌仍然无限期有效。是否有限制刷新令牌使用量的实现?我知道该字段JWT_REFRESH_EXPIRATION_DELTA可以确定令牌的有效期,但这并不能解决当前的问题。

from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token


urlpatterns = [
    url(r"^jwt/create/?", obtain_jwt_token, name="jwt-create"),
    url(r"^jwt/refresh/?", refresh_jwt_token, name="jwt-refresh"),
    url(r"^jwt/verify/?", verify_jwt_token, name="jwt-verify"),
]

标签: djangodjango-rest-frameworkdjango-authenticationdjango-rest-framework-jwt

解决方案


只需在settings.py文件中配置以下语句。

JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=1),
    'JWT_ALLOW_REFRESH': True,
    'JWT_RESPONSE_PAYLOAD_HANDLER': 'users.views.custom_jwt.jwt_response_payload_handler',  // This is the file represents token add external values.
}

推荐阅读