You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SimpleJWT每次调用TokenObtainPairView返回不同令牌是否为默认行为?

Django JWT 令牌生成问题解答

1. 每次调用返回不同令牌是否是默认行为?

是的,这是django-rest-framework-simplejwt的默认行为。默认配置下,每次调用TokenObtainPairView接口,都会生成全新的access和refresh令牌,无论之前的令牌是否处于有效期内。框架不会复用或保留之前生成的令牌,因为它默认采用无状态的JWT实现,令牌的验证完全依赖自身携带的签名和过期信息,无需后端存储令牌数据。

2. 能否在令牌未过期时获取之前的令牌?

默认情况下做不到。因为simplejwt没有持久化存储已生成的令牌,无法追踪用户当前有效的旧令牌。如果需要实现这个需求,你需要自行扩展逻辑,大致步骤如下:

  • 在用户模型中添加字段,用于存储当前有效的access令牌、refresh令牌以及对应的过期时间
  • 自定义TokenObtainPairView,重写其post方法:在生成新令牌前,先检查用户是否存在未过期的令牌记录,如果有则直接返回该旧令牌;如果没有或已过期,再生成新令牌并更新用户模型中的记录
  • 额外处理令牌失效场景:比如用户修改密码、主动登出时,需要清空用户模型中存储的令牌记录,确保旧令牌无法再被返回

内容的提问来源于stack exchange,提问作者BillTheKid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:45:33