django2.x -- auth模块的authenticate方法一直返回None,认证不成功
问题1:创建用户时是否使用的是create_user
在账号注册的时候,要用objects.create_user()函数,create()是明文存储
- create_user()这个函数会将密码自动加密,密文存储,加密规则“pbkdf2_sha256”
- authenticate()会将输入的明文密码,自动加密,然后去数据库匹配,如果匹配成功返回一个user对象,如果不成功,返回None。
复制 User.objects.create_user(username, email, password)
authenticate(username=username, password=password)
问题2:django2.x版本问题
Django2.X中,authenticate将is_active关联了,当is_active=0时,默认验证不通过,所以返回None。
- 解决办法:在项目的settings.py中申明,不关联is_active这个值。
settings.py
# 让authenticate不关联is_active
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']
- 用check_password来解决
auth内置check_password()函数, 也可以用于测试密码是否正确。
该方法仅在以上authenticate函数无效情况下使用
from django.contrib.auth.hashers import check_password
# 第一个参数为明文密码,第二个参数为加密后的密码
if check_password(password, pwd):
# 用户名密码正确
pass
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本