如何在djang登录时将普通密码检查为散列密码

2024-10-01 15:48:49 发布

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

我的数据库表中有散列密码(使用set\u password),我想使用check\u password将散列密码与普通密码进行比较,以成功登录

views.py/登录视图

def logauth(request):
    if request.method == "POST":
        email = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, email=email, password=password)

        if user is not None:
            messages.error(request, 'if part : user is not  None')
            login(request, user)
            return redirect('emp')
        else:
            messages.error(request, 'else part : user is None')
            return redirect('login_url')
    else:
        messages.error(request, 'Please provide valid credentials')
        return render(request, 'registration/login.html')

后端.py

class MyBackEnd(object):

    def authenticate(self, request, email=None, password=None):
        existing_user = RegAuth.objects.get(email=email,password=password)
        if not existing_user:
            # Checking the user Regauth Custom DB.
            user_data = RegAuth.objects.get(email=email,password=password)
            if email == user_data.email:
                user = RegAuth.objects.create_user(email=email, password=password)
                user.save()
                return user
            else:
                return None
        else:
            return existing_user

    def get_user(self, email):
        try:
            return RegAuth.objects.get(email=email)
        except Exception as e:
            return False

Tags: none密码getreturnifobjectsisemail

热门问题