我正在使用django rest框架JWT库
http://getblimp.github.io/django-rest-framework-jwt/
JWT令牌过期有两个设置
JWT_EXPIRATION_DELTA,以秒为单位
上的文档:
可以通过将JWT_VERIFY_EXPIRATION设置为False来关闭过期时间验证。如果没有过期验证,JWT将永远持续下去,这意味着攻击者可以无限期地使用泄漏的令牌。这是Python的datetime.timedelta的一个实例。这将添加到datetime.utcnow()中,以设置过期时间。
默认为datetime.timedelta(seconds=300)(5分钟)。
和JWT_REFRESH_EXPIRATION_DELTA
文档:
mit的令牌刷新,是一个datetime.timedelta实例。这是在原始令牌之后需要多长时间才能刷新未来的令牌。
默认为datetime.timedelta(days=7) (7天)。
我不确定不同的用例。我将jwt令牌过期增量设置为20秒。
然后得到一个令牌,保存到本地,等待20秒,关闭我的浏览器窗口,然后重新导航到该站点。
预期不会登录,因为令牌将过期,但我已登录。
那么JWT令牌过期增量之间的区别是什么呢?
还有JWT Refresh Delta?
发布于 2018-05-09 17:14:29
JWT_EXPIRATION_DELTA是您的JWT令牌运行之前的实际时间。在JWT_EXPIRATION_DELTA中提到之后,每当您使用这个令牌访问一个安全端点(启用了JWT )之后,它将返回一个错误,其中包含消息Your JWT Token has been expired。因此,您需要在JWT令牌过期之前继续刷新它。根据文件:
可以重复使用令牌刷新(token1 -> token2 -> token3),但是这个令牌链将原始令牌(使用用户名/密码凭据获得)存储为orig_iat的时间。您只能将刷新令牌保持到JWT_REFRESH_EXPIRATION_DELTA。
这意味着,无论刷新多少次令牌,它都将始终保留生成第一个令牌时(第一次登录用户)的原始时间的记录。因此,如果JWT_REFRESH_EXPIRATION_DELTA设置为1天,则不能在生成初始令牌后1天后继续刷新JWT令牌(意味着您的第一个令牌生成时间)。
不知道您使用什么机制在前端签入,如果用户是经过身份验证的。但是,如果您使用在后端检查它(DRF提供了一些准备好的端点来验证和刷新令牌),您将发现它将无法工作。
https://stackoverflow.com/questions/50258431
复制相似问题