Установка пароля для модели(не пользователя) в django для простой аутентификации

#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 можно ли сохранить пароль в поле символов? Это кажется неправильным