#django
#django
Вопрос:
Я хочу проверить, какой пароль я сохранил в базе данных для пользователя с именем «user».
Вот что я сделал.
user@ubuntu:~/Documents/Django/django_bookmarks$ python manage.py shell
Python 2.7.1 (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.auth.models import User
>>> user = User.objects.get(id=1)
>>> user.username, user.password
(u'user', u'sha1$6934a$f92c73726c0bd5d4821013ad4161578a2114090f')
>>>
>>> import hashlib
>>> hexhash = hashlib.sha1("password")
>>> hexhash
<sha1 HASH object @ 0x99c18c0>
>>> hexhash.digest
<built-in method digest of _hashlib.HASH object at 0x99c18c0>
Я помню, что я использовал ‘password’ для пароля пользователя, но я не могу это проверить.
Вопрос> Как я могу узнать, какой пароль для пользователя?
Спасибо
Ответ №1:
Вы можете проверить пароль пользователя с помощью check_password
:https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.check_password
from django.contrib.auth.models import User
user = User.objects.get(id=1)
user.check_password('password') # Returns True or False
Ответ №2:
в django был хэширован ваш пароль, это функция, которая работает только определенным образом.
Вы можете попробовать выполнить поиск по sha1 в базе данных хэшей, но они не гарантируют его нахождения.
Вам следует выполнить поиск ‘f92c73726c0bd5d4821013ad4161578a2114090f’. Хэш-функцией является sha1, а ключом, используемым для хэширования, является ‘6934a’
Ответ №3:
Вы не можете получить фактический пароль, который вы установили. метод set_password преобразует исходный пароль в код sha1. Вы можете только проверить свой пароль, правильный он или нет.
также проверьте эту ссылку
https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.check_password