Подтвердить что ты не робот

Как получить пароль в django

Как получить пароль пользователя?

u = User.objects.get(username__exact=username)
print u.password

отображает sha1$f0971$441cac8f604d49869e33ca125a76253a02fef64e

Есть ли функция для поиска пароля из этой кодированной строки?

4b9b3361

Ответ 1

Нет. Это невозможно, по дизайну. Но в любом случае никогда не должно быть необходимости делать это.

Ответ 2

Из-за ограничений безопасности хэш-метод пароля является одним из способов. Вам потребуется reset пароль для пользователей.

Попробуйте использовать метод set_password(raw_password), чтобы дать пользователю новый пароль. Не забудьте вызвать метод save(), чтобы сохранить изменения в базе данных.

u = User.objects.get(username__exact=username)
u.set_password(raw_password)
u.save()

Ответ 3

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

что вы можете сделать, это заменить пароль пользователя тем, кого вы знаете. вот как (хороший) сайт "забыли пароль" работают: они отправляют вам новый случайный пароль, а не ваш старый, так как они (не должны) иметь к нему доступ

Ответ 4

Нет, поле содержит засоленный хэш пароля. из строки мы знаем ее функцию SHA1. Если у вас есть пароль, вы сможете создать одно и то же значение хэша, которое будет действовать как след. По соображениям безопасности должен быть теперь способ восстановить пароль экономичным способом (вы все еще можете использовать грубую силу, но займет много времени).

Ответ 5

Вы можете проверить правильность пароля с помощью:

u.check_password("your password")

Этот метод и u.set_password("you password") решают все ваши проблемы.

sha1$f0971$441cac8f604d49869e33ca125a76253a02fef64e это:

алгоритм хэш-функции $ соль $ хеш-код