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

DRF-simple-JWT:新用户注册成功后无法正常登录问题排查

问题根因

1. 新用户默认未激活

你自定义的CustomUser模型中,is_active字段默认值设置为False,而djangorestframework-simplejwt的认证逻辑默认仅允许状态为活跃的账号获取token,这是触发No active account found with the given credentials报错的直接原因。

2. 密码被二次哈希导致凭证校验失败

你的序列化器逻辑存在冲突:

  • 首先在validate_password方法中调用了make_password,将用户传入的明文密码直接转为哈希值
  • 随后在create方法中又调用了instance.set_password(password),该方法会将传入的参数再次做哈希处理
    最终数据库中存储的是经过两次哈希的密码,和用户输入的明文密码完全不匹配,即便账号激活也无法通过凭证校验。

修复方案

  1. 删除冗余的密码哈希逻辑:直接删掉RegisterUserSerializers中的validate_password方法即可,create方法中的set_password已经可以正确处理明文密码的加密。
  2. 修改用户默认活跃状态:
    • 如果你不需要新用户审核流程,注册后即可直接登录,将CustomUser模型中is_active字段的默认值改为default=True,执行makemigrations和migrate命令更新数据库结构即可。
    • 如果你需要保留用户激活流程(如邮件激活),则额外开发激活接口,用户完成激活操作后将对应账号的is_active字段更新为True即可正常获取token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:04