Как найти пароль, хранящийся в django.contrib.auth.models.User - PullRequest
0 голосов
/ 12 ноября 2011

Я хочу проверить, какой пароль я сохранил в БД для пользователя с именем '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>

Я помню, что использовал пароль для пароля пользователя, но не могу его подтвердить.

Вопрос> Как узнать, какой пароль для пользователя?

Спасибо

Ответы [ 3 ]

6 голосов
/ 12 ноября 2011

Вы можете проверить пароль пользователя с помощью 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 голосов
/ 12 ноября 2011

django хэшировал ваш пароль, это функция, которая работает только в определенном порядке.

Вы можете попытаться найти sha1 в базе данных хэшей , но они не являются гарантиейчтобы найти его.

Вы должны искать 'f92c73726c0bd5d4821013ad4161578a2114090f'.Функция хеширования - это sha1, а ключ, используемый для хеширования, - «6934a»

1 голос
/ 12 ноября 2011

Вы не можете получить действительный пароль, который вы установили.Метод set_password конвертирует оригинальный пароль в код sha1.Вы можете только проверить свой пароль, либо это правильно, либо нет.

также проверьте эту ссылку

https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.check_password

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...