當用戶更改密碼時,我想發送一個信號,以便我可以在某些模型上做一些操作。檢測在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'}
我也看到有一個password_change_done
身份驗證視圖,但我不知道如何使用它。 https://docs.djangoproject.com/en/1.10/topics/auth/default/#built-in-auth-views
任何想法?
請注意,這很好地檢測到密碼更改時鹽或哈希算法的變化。如果您只需檢測實際的密碼更改,則需要掛鉤到視圖中,並在散列之前檢查新密碼。 – knbk
什麼時候salt或hash alg會改變?升級場景? – 43Tesseracts
@ 43Tesseracts更新版本的Django更新所使用的密碼算法/輪次,並且當用戶登錄時更新密碼以使用更新版本 –