A partire da Django 1.9, è possibile definire i propri validatori di password personali. Potresti anche semplicemente ridefinire uno esistente, se vuoi.Quando lo fai, aggiungi un metodo:
from django.contrib.auth.password_validation import MinimumLengthValidator
class MyPasswordValidator(MinimumLengthValidator):
def password_changed(self, password, user):
# put your password changed logic here
Assicurati di includere la nuova classe nelle impostazioni come segue:
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'my_package.password_validators.MyPasswordValidator',
'OPTIONS': {
'min_length': 8,
}
},
...
]
Ora, ogni volta che una password viene modificata dall'utente, la classe MyPasswordValidator sarà notificato Nella mia esperienza, questo è il modo migliore per farlo, perché:
- Quando si utilizza segnali per catturare questi eventi, vi sarà anche catturare gli eventi in cui il sistema ricodificato una password esistente a causa di un cambiamento di hashing parametri, nella maggior parte dei casi, non vorrai catturare questi eventi e non c'è un modo ovvio per prevenirli con i segnali.
- È possibile aggiungere semplicemente una chiamata di funzione nel metodo save() di tutti i moduli di gestione delle password, ma diventa difficile quando si desidera fare lo stesso con il modulo di modifica della password di amministrazione incorporato e non sarà di aiuto se le modifiche alle password vengono eseguite a livello di programmazione all'esterno di un modulo.
Ti informerò che il parametro password in password_changed() è in effetti la password non valida dell'utente. Fare attenzione quando si maneggia questo e assolutamente non memorizzarlo ovunque non criptato/non alterato.
Segnali d'allarme sincrono però? A meno che la posta non avvenga in un processo asincrono, non sarebbe la stessa cosa? – jdi
Quindi il bit "fire off a thread". Se si crea una discussione per inviare l'e-mail nel segnale, essa diventa effettivamente asincrona. Il segnale restituisce elaborazione e la nuova discussione passa felicemente al suo processo di invio della posta elettronica. –
Ah, mi sono perso un po '. Concentrati solo sui segnali – jdi