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

Django EmailLoginVerify函数邮箱登录认证失败问题排查

问题分析与解决

核心问题

你代码里的authenticate调用犯了关键错误——直接传入了数据库存储的哈希密码,但authenticate方法要求的是用户输入的明文密码。从打印日志能看到,target.password是pbkdf2_sha256$...格式的加密字符串,把它传给authenticate时,Django会将其当作明文再次哈希,结果必然和数据库里的哈希值不匹配,所以返回None。

修复方案

既然已经通过邮箱验证码完成了身份校验(确认邮箱对应用户合法、验证码正确),完全不需要调用authenticate,直接用获取到的用户对象执行登录即可:

修改代码中authenticate及后续判断部分:

# 删除原有的authenticate相关代码
# user = authenticate(request, username=target.username, password=target.password)
# print(user)

# 直接登录已验证的用户
login(request, target)
return HttpResponse('good')

补充说明

这个场景下用authenticate本身就不合理,因为邮箱验证码登录流程里用户没有输入密码,不存在明文密码可以传给authenticate做验证。跳过authenticate直接调用login是符合业务逻辑的——你已经通过其他方式完成了用户身份的合法性校验。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:12:50