如何使用DRF JWT实现“记住我”功能?

时间:2018-09-11 18:17:27

标签: python django rest django-rest-framework jwt

我正在尝试使用JWT DRF实现方式为用户提供一种保持登录状态的方式。

documentation中,建议令牌过期后就无法刷新它们。

鉴于用户可能会关闭其浏览器,我仅有的两个选择要么是使用期限很长的令牌,要么将用户名/密码存储在localStorage中,这两个选项似乎都不安全。

是否有其他方法可以实现这一目标?另外,有一种方法可以根据用户的需求(只有选择“记住我”选项)才拥有长期存在的令牌

1 个答案:

答案 0 :(得分:1)

是的,JWT仅用于短期认证会话,即使使用刷新也是如此。如果您是为浏览器设计的,建议您使用常规的旧SessionAuthentication来保持用户长期登录(例如30天)。

如果您想避免使用cookie,则可以使用OAuth2等短期令牌和长期令牌的组合,例如,签出Django OAuth Toolkit并与DRF集成。短期令牌就像JWT一样对会话进行身份验证,而长期令牌(生命周期为30至60天)用于从您的API获取短期令牌,并可以存储在localStorage中。