#python #django
Вопрос:
Что касается моего веб-сайта, я не планирую делать его обязательным для регистрации пользователей. Вместо этого они могут создать сообщение и установить пароль для него, чтобы управлять им. Я могу использовать метод «set_password», который django предоставляет для пользовательской модели:
def set_password(self, raw_password):
import random
algo = 'sha1'
salt = get_hexdigest(algo, str(random.random()), str(random.random()))[:5]
hsh = get_hexdigest(algo, salt, raw_password)
self.password = '%s$%s$%s' % (algo, salt, hsh)
так что это решает часть сохранения пароля. Но это приведет к хэшированию пароля (что хорошо), но теперь я застрял на том, как это аутентифицировать?? Поэтому, когда кто-то хочет отредактировать экземпляр созданной им модели, ему сначала необходимо пройти аутентификацию. Как мне это сделать?
Спасибо
Комментарии:
1. Вы можете использовать Django
check_password
и, таким образом, скопировать это в свою модель. Это проверит установленный пароль и запустит тот же хэшер с той же солью и тем же количеством итераций, и посмотрит, совпадают ли хэши.2. Соль не должна быть случайной, иначе у вас возникнет такая ситуация, когда вы не сможете воссоздать один и тот же хэш.
3. Видишь github.com/django/django/blob/…
4. @ilyasJumadurdyew: на самом деле вы можете: в поле пароля хранится соль, поэтому для ее проверки он сначала проанализирует хэшированный пароль, а затем использует тот же алгоритм и соль, чтобы проверить, можно ли получить тот же хэш.
5. @WillemVanOnsem можно ли сохранить пароль в поле символов? Это кажется неправильным