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

Django登录认证失败:输入正确信息却无法登录求助

登录验证失败的解决思路
  • 检查用户密码的哈希存储
    注册用户时必须使用User.objects.create_user()方法,该方法会自动对密码进行哈希处理。如果注册时用了User.objects.create()直接存入明文密码,authenticate()方法会验证失败。确认注册视图里的用户创建逻辑是否正确。

  • 验证用户模型与认证参数匹配
    若使用了自定义用户模型,需确保AUTH_USER_MODEL配置正确,且authenticate()的参数(这里是username)与用户模型的USERNAME_FIELD一致。默认用户模型的USERNAME_FIELD是username,若自定义时修改了该字段,需同步调整authenticate的参数。

  • 确认认证后端配置
    检查settings.py中的AUTHENTICATION_BACKENDS,默认值为['django.contrib.auth.backends.ModelBackend']。如果该配置被修改或移除,会导致authenticate()无法正常验证用户。

  • 调试定位具体失败原因
    在视图函数中添加调试代码,明确是用户不存在还是密码不匹配:

    def sign_in(request):
        if request.method == "POST":
            username = request.POST['username']
            password = request.POST['password']
            print(username, password)
            
            # 调试代码
            try:
                user = User.objects.get(username=username)
                print("用户存在,密码匹配:", user.check_password(password))
            except User.DoesNotExist:
                print("用户不存在")
            
            user = authenticate(username=username, password=password)
            # 后续逻辑...
    

    通过打印结果可以直接定位问题根源。

  • 排查用户名大小写问题
    Django默认用户名区分大小写,若输入的用户名大小写与数据库中存储的不一致,authenticate()会验证失败。可以在注册时将用户名转换为小写存储,或者自定义认证后端实现用户名不区分大小写验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:55:30