我正在使用django rest框架JWT库
http://getblimp.github.io/django-rest-framework-jwt/
JWT令牌过期有两种设置
JWT_EXPIRATION_DELTA
,以秒为单位
The docs on it:
您可以通过将JWT_VERIFY_EXPIRATION设置为False来关闭到期时间验证 . 如果没有过期验证,JWT将永远存在,意味着攻击者可以无限期地使用泄露的令牌 . 这是Python的datetime.timedelta的一个实例 . 这将添加到datetime.utcnow()以设置到期时间 .
默认值为datetime.timedelta(秒= 300)(5分钟) .
和 JWT_REFRESH_EXPIRATION_DELTA
Docs:
mit on token refresh,是一个datetime.timedelta实例 . 这是在原始令牌之后可以刷新未来令牌的时间 .
默认值为datetime.timedelta(days = 7)(7天) .
我不确定不同的用例 . 我将jwt令牌到期增量设置为20秒 .
然后得到一个令牌保存到本地等待20秒关闭我的浏览器窗口并重新导航到该网站
期望不登录,因为令牌将过期,但我已登录 .
那么JWT令牌到期增量之间有什么区别呢?
和JWT刷新过期达美?
1 回答
JWT_EXPIRATION_DELTA
是JWT令牌工作的实际时间 . 在JWT_EXPIRATION_DELTA
中提及时间后,每当您使用此令牌访问安全 endpoints (启用了JWT Auth)时,它将返回错误消息Your JWT Token has been expired
. 因此,您需要在过期之前保持刷新JWT令牌 . 根据文件:这意味着无论您刷新令牌多少次,它都会始终记录您生成第一个令牌时的原始时间(首次登录您的用户) . 因此,如果
JWT_REFRESH_EXPIRATION_DELTA
设置为1天,则在生成原始令牌后1天内无法继续刷新JWT令牌(表示您的第一个令牌生成时间) .如果用户是否经过身份验证,请不知道您使用什么机制来检查前端 . 但是如果你在后端检查它(DRF-JWT提供了一些现成的 endpoints 来验证和刷新令牌),你会发现它不起作用 .