gpt4 book ai didi

django - JWT token expire_delta 和 JWT Refresh Expiration Delta django jwt 的区别

转载 作者:行者123 更新时间:2023-12-04 14:53:56 27 4
gpt4 key购买 nike

我正在使用 django rest 框架 JWT 库

http://getblimp.github.io/django-rest-framework-jwt/

JWT token 过期有两个设置
JWT_EXPIRATION_DELTA以秒为单位

关于它的文档:

您可以通过将 JWT_VERIFY_EXPIRATION 设置为 False 来关闭过期时间验证。如果没有过期验证,JWT 将永远存在,这意味着攻击者可以无限期地使用泄漏的 token 。
这是 Python 的 datetime.timedelta 的一个实例。这将被添加到 datetime.utcnow() 以设置到期时间。

默认为 datetime.timedelta(seconds=300)(5 分钟)。

JWT_REFRESH_EXPIRATION_DELTA
文档:

token 刷新时 mit 是一个 datetime.timedelta 实例。这是在原始 token 之后可以刷新 future token 的时间。

默认为 datetime.timedelta(days=7)(7 天)。

我不确定不同的用例。我将 jwt token 过期增量设置为 20 秒。

然后得到一个 token 保存到本地等待 20 秒关闭我的浏览器窗口并重新导航到该站点

期望不会登录,因为 token 会过期但我已登录。

那么JWT token 到期增量有什么区别

和 JWT 刷新过期增量?

最佳答案

JWT_EXPIRATION_DELTA是您的 JWT token 生效的实际时间。在 JWT_EXPIRATION_DELTA 中提到的时间之后, 每当您使用此 token 访问安全端点(启用了 JWT 身份验证)时,它都会返回错误消息 Your JWT Token has been expired .因此,您需要在 JWT token 过期之前不断刷新它。根据文档:

Refresh with tokens can be repeated (token1 -> token2 -> token3), but this chain of token stores the time that the original token (obtained with username/password credentials), as orig_iat. You can only keep refreshing tokens up to JWT_REFRESH_EXPIRATION_DELTA



这意味着无论您刷新 token 多少次,它都会始终保留生成第一个 token 时的原始时间记录(您第一次登录您的用户)。所以如果 JWT_REFRESH_EXPIRATION_DELTA设置为 1 天,您不能在生成原始 token 后的 1 天后继续刷新您的 JWT token (意味着您的第一个 token 生成时间)。

如果用户通过身份验证,不知道您使用什么机制来检查前端。但是如果你使用在后端检查它(DRF-JWT 提供了一些现成的端点来验证和刷新 token ),你会发现它不起作用。

关于django - JWT token expire_delta 和 JWT Refresh Expiration Delta django jwt 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com