Когда пользователь меняет свой пароль, я хочу отправить сигнал, чтобы я мог делать некоторые вещи на некоторых моделях.Обнаружение измененного пароля в Django
Как создать этот сигнал?
Я смотрел на post_save
сигнал для пользователя:
post_save.connect(user_updated, sender=User)
Однако, как представляется, не будет ничего там для меня, чтобы проверить, если пароль был изменен:
def user_updated(sender, **kwargs):
print(kwargs) # {'created': False, 'raw': False, 'instance': <User: 100002>, 'update_fields': None, 'signal': <django.db.models.signals.ModelSignal object at 0x7ff8862f03c8>, 'using': 'default'}
Я также вижу, что есть auth view password_change_done
, но я не уверен, как бы я его использовал. https://docs.djangoproject.com/en/1.10/topics/auth/default/#built-in-auth-views
Любые идеи?
Обратите внимание, что это хорошо обнаруживает изменения в алгоритме соли или хеширования в качестве смены пароля. Если вам необходимо определить только фактические изменения пароля, вам нужно подключиться к представлению и проверить новый пароль до его хэширования. – knbk
Когда соль или хеш-альг изменились? Сценарий обновления? – 43Tesseracts
@ 43Tesseracts новые версии Django обновляют алгоритм/раунды паролей, и когда пользователи регистрируются, он обновляет пароль для использования более новой версии –