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

Django自定义Doctor用户模型登录提示无效密码问题排查

问题原因分析

1. 错误重写password字段导致密码未正确哈希存储

你的Doctor模型手动定义了password = models.TextField(max_length=150),但AbstractUser已经自带了经过加密处理的password字段。Django默认会对用户密码进行哈希(如PBKDF2算法)后再存入数据库,你重写的password字段会绕过这个加密机制,导致数据库中存储的是明文密码(或不符合Django规范的格式)。

当authenticate方法验证时,会将用户输入的密码与数据库中存储的哈希密码进行比对,由于数据库内的密码不是正确的哈希格式,必然验证失败,返回"Invalid password"错误。

2. is_doctor属性未定义

视图代码中判断了user.is_doctor,但Doctor模型里并没有定义这个字段或属性。即便认证成功,这个判断也会让逻辑进入else分支,同样返回密码错误的提示。

3. username字段未设置唯一性(次要潜在问题)

AbstractUser默认要求username字段唯一,但你重写的username = models.CharField(max_length=50)未添加unique=True约束,后续可能引发数据完整性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:42:40