【问题标题】:Check if user exist and password is not correct django检查用户是否存在且密码不正确django
【发布时间】:2022-11-27 20:01:08
【问题描述】:

我正在尝试返回一条错误消息密码不正确如果用户在登录表单上输入了无效密码。但是我的问题是我无法检查用户是否存在并且密码不正确。

这是我用于登录的 views.py

def signin(request):
    if request.user.is_authenticated:
        return redirect(index)
    if request.method == "POST":
        form = Signin(request.POST)
        if form.is_valid():
            username = request.POST["username"]
            password = request.POST["password"]

            # try:

            user = auth.authenticate(username=username, password=password)

            if user is not None:
                auth.login(request, user)
                return redirect(index)

            elif user is None:
                messages.error(request, "User does not exist")
                return redirect(signin)
    else:
        form = Signin()
        return render(
            request,
            "accounts/login.html",
            {
                "form": form,
            },
        )

如您所见,我可以检查用户是否存在。我想做的是检查用户是否存在且密码不正确,返回错误消息。

【问题讨论】:

    标签: python django django-views django-forms


    【解决方案1】:

    你可以写这样的代码......

    from django.contrib.auth.hashers import check_password
    def SigninView(request):
        if request.method == 'POST':
            uname = request.POST['uname']
            upass = request.POST['upass']
            get_user_obj=User.objects.filter(username=uname).exists()
            if get_user_obj:
                get_user=User.objects.filter(username=uname)
                check_pass = check_password(upass,get_user[0].password)
                if not check_pass:
                    print(f"Password dose not exist with username = {get_user[0].username}")
                    return redirect('/')
                else:
                    login(request,get_user[0])
                    print('Login Success')
                    return redirect('/shop/')
            else:
                print('Username dose not exist')
                return redirect('/')
        return render(request,'signin.html')
    

    【讨论】:

      猜你喜欢
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      相关资源
      最近更新 更多