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

Djoser+DRF新用户首次激活接口始终返回stale token错误如何解决?

问题排查方案

最高概率原因:自定义用户创建逻辑错误

Djoser 激活流程要求新注册用户默认 is_active = False,如果你的自定义序列化器 base.serializers.UserSerializer 的 create 方法,或者用户模型字段默认值将 is_active 设为 True,用户注册时就已经激活,后续调用激活接口会直接返回 stale token for the given user 错误。
请优先检查 UserSerializer 代码,确认创建用户时没有手动修改 is_active 字段的默认值。

其他常见排查点

  • 参数校验:在前端激活请求发起前打印 uid 和 token,和邮件激活链接里的对应参数逐字符比对,确认没有被URL转义、截断、多余空格。比如uid是URL安全的Base64编码,如果前端自动解码把+转为空格、把/做路径截断,都会导致参数校验失败。
  • 有效期配置校验:Djoser激活token不使用SimpleJWT的有效期配置,它基于Django原生的PasswordResetTokenGenerator生成,有效期由settings.py的PASSWORD_RESET_TIMEOUT参数控制,默认值为259200秒(3天),如果你手动修改过这个参数设为极小值,也会出现token即时过期的问题。
  • 重复激活校验:确认是否触发了多次激活邮件发送,你点击的是最早发送的过期链接,新生成的token会覆盖旧token,导致旧链接直接失效。
  • 本地调试:如果以上排查都没有问题,可以在Djoser的ActivationView的post方法中打断点,确认是uid解析不到对应用户,还是token本身校验不通过,进一步定位根因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:03