0

我的 APP 中有自己的登录/登录功能。在注册时,我正在使用passlib hash方法加密密码并将加密的值存储在表中。但我的问题是,当我尝试登录时,它与使用 Python 的值不匹配。

这是我的代码:

def signsave(request):
    name = request.POST.get('uname')
    password = request.POST.get('pass')
    con_pass = request.POST.get('conpass')
    new_pass = sha256_crypt.encrypt( password )
    hash = new_pass
    if password == con_pass:
       passw = User(
             uname=name,
             password=new_pass,
             raw_password=password,
       )
    passw.save()

在这里,我将所有凭据保存在表中。

def loginsave(request):
    password = request.POST.get('pass')
    uname = request.POST.get('uname')
    new_pass = sha256_crypt.encrypt( password )
    per = User.objects.all().filter(
            Q(password__icontains=new_pass) &
            Q(uname__icontains=uname)).count()

在这里,我再次尝试加密注册的密码并与表匹配,但它不起作用并且计数为 0。

4

1 回答 1

0

尝试登录时,您不应该再次对密码进行哈希处理。您需要从数据库中获取现有哈希并.verify()在其上使用。passlib 的主页上有一个关于如何使用它的示例:https ://passlib.readthedocs.io/en/stable/

于 2018-02-07T00:17:04.177 回答