如何在Django中手动验证和登录用户?

2024-05-29 06:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

    if request.method=='POST':
        try:        
            email=request.POST['email']
            password = request.POST['password']
            if StudentUser.objects.filter(email=email).exists():
                user = StudentUser.objects.get(email=email)
                if user.check_password(password):
                    user = auth.authenticate(email=email)
                    if user is not None:
                        auth.login(request,user)
                        messages.success(request,'Successfully Loggedin')
                        return redirect('/')
                else:
                    messages.warning(request,'Password does not match')
                    return redirect('login')
            else:
                messages.error(request,'No Account registered with this mail')
                return redirect('login')
        except Exception as problem:
            messages.error(request,problem)
            return redirect('login')
    return render(request,'login.html')

上面的代码我正在尝试手动验证用户身份,但它不起作用。我想通过手动检查密码来验证用户。 我怎么做

**当我在auth.authenticate函数中传递密码时,显示密码不匹配错误


Tags: auth密码returnifobjectsemailrequestlogin
1条回答
网友
1楼 · 发布于 2024-05-29 06:01:38

您应该将密码作为参数传递给身份验证方法

docs

user = authenticate(username='john', password='secret')

Use authenticate() to verify a set of credentials. It takes credentials as keyword arguments, username and password for the default case, checks them against each authentication backend, and returns a User object if the credentials are valid for a backend.

相关问题 更多 >

    热门问题