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

使用Django JWT认证时出现“无有效账户”错误求助

问题排查与修复

核心错误:CustomUserManager的create_user方法存在致命问题

你的CustomUserManager.create_user方法里有两个直接导致JWT验证失败的严重问题:

  1. 无限递归调用:方法内使用CustomUser.objects.create_user(email=email, password=password)创建用户,这会不断触发自身调用,最终导致栈溢出,用户创建逻辑根本无法正确执行。
  2. 硬编码覆盖密码:你强制调用user.set_password('nouveau_mot_de_passe'),这会完全忽略传入的password参数,把所有用户的密码固定成这个字符串——哪怕你认为数据库里的凭证正确,实际验证时也匹配不上你输入的密码。

修正后的CustomUserManager代码

替换原models文件中的CustomUserManager类:

from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models  # 补充遗漏的导入

class CustomUserManager(BaseUserManager):
    def create_user(self, email, password=None, **extra_fields):
        if not email:
            raise ValueError("L'adresse email doit être définie.")
        
        email = self.normalize_email(email)
        # 使用self.model创建实例,避免递归调用
        user = self.model(email=email, **extra_fields)
        # 仅当传入密码时才设置,保留原生逻辑
        if password:
            user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_active', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError('Superuser must have is_staff=True.')
        if extra_fields.get('is_superuser') is not True:
            raise ValueError('Superuser must have is_superuser=True.')

        return self.create_user(email, password, **extra_fields)

额外必要操作

  1. 重新创建测试用户:由于之前的create_user方法逻辑错误,数据库中现存用户的密码大概率是无效的,修正代码后需要重新创建测试用户,或手动修改现有用户的密码为正确值。
  2. 验证Postman请求格式:确保向JWT默认端点/api/token/发起POST请求,参数需符合要求:
    • 表单数据:username填用户邮箱,password填正确密码;
    • JSON格式:{"username": "user@example.com", "password": "yourpassword"}。
  3. 确认用户激活状态:检查数据库中测试用户的is_active字段是否为True(你的模型默认是True,但如果手动修改过需确认)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:17:36