我正在使用django rest frameworks 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
官方文档解释:
刷新令牌时,是一个datetime.timedelta实例。这是在原始令牌之后多长时间内可以从未来的令牌中刷新。
默认为datetime.timedelta(days=7)(7天)。
我不确定其不同的用例。我将jwt令牌过期时间设置为20秒。
然后获得一个令牌,将其保存到本地,等待20秒钟,关闭我的浏览器窗口并重新导航到该站点,
原本期望因为令牌已过期而无法登录,但我却成功登录了。
那么JWT令牌到期时间和JWT刷新到期时间有什么区别呢?
JWT_EXPIRATION_DELTA
是单个令牌在必须刷新之前可以使用的最长时间。而JWT_REFRESH_EXPIRATION_DELTA
是令牌自初始创建(用户使用用户名和密码登录)以来可以刷新的最长时间。这意味着在JWT_REFRESH_EXPIRATION_DELTA
过期后,用户存储的令牌将无法使用,他们将不得不重新登录。 - user9487981