не совпадает введенный пароль в форме входа с паролем в базе данных - PullRequest
0 голосов
/ 27 октября 2011

Я использую метод, определенный в документации django: http://www.djangobook.com/en/beta/chapter12/

def login(request):
    m = members.get_object(username__exact=request.POST['username'])
    if m.password == request.POST['password']:
        request.session['member_id'] = m.id
        return HttpResponse("You're logged in.")
    else:
        return HttpResponse("Your username and password didn't match.")

, но похоже, что он не соответствует паролю!Я ввожу правильное имя пользователя и пароль, но он не находит пользователя, когда я удаляю эту строку, он работает:

if m.password == request.POST['password']:

Я думаю, потому что этот пароль хешируется, он не совпадает с простым паролемчто пользователь вводит в форме входа.

так, что мне теперь делать?

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Вы должны использовать user.check_password для этого.Причина в том, что пароль хранится в хешированном виде, и вы не можете сравнивать его напрямую, как это.

PS Посмотрите, как работают бэкэнды аутентификации.

1 голос
/ 27 октября 2011

Это не должно быть примером того, как сделать аутентификацию.Вы найдете реальный пример чуть ниже вниз по странице .

...