Моя команда много лет назад перезаписывала метод аутентификации для пользователей для аутентификации по LDAP вместо бэкенда модели djangos.
этот метод просматривает LDAP для пользователя.Если пользователь существует с правильными именем пользователя и паролем, он получает или создает пользователя (это означает, что пользователю не нужно существовать как объект модели в базе данных Django, чтобы кто-то мог войти в него).
TheМетод оставляет вновь созданный пароль как None.Затем устанавливает всю другую информацию.
Я заметил, что они, после проверки пользователя, вызывают set_unusable_password для пользователя, если они были действительными.В комментарии они написали, что это отменяет встроенную в Django обработку паролей ... что, очевидно, имеет смысл.Но я не знаю, зачем им это нужно, поскольку мы уже переписали метод аутентификации.
Я проверил это, удалив set_unusable_password, чтобы пароль оставался как None и проверка работала.Они все еще могли войти с паролем, который хранится в LDAP.Вы все еще не могли перезаписать пароль в модели, чтобы он отличался от пароля в LDAP, и войдите в систему с этим.
Таким образом, в основном вызов set_unusable_password не имел никакого эффекта, кроме простого создания пароля ... который не использовалсяВ любом случае.
Единственное, о чем я могу думать, это то, что это может быть решением проблемы, которая была в более старых версиях Django (мы сейчас в 1.11).
После того, как мы потратили многовремя в исходном коде и в документации, я не мог понять, зачем нам это нужно.
Зачем это там?Люди, которые написали это, уже ушли, поэтому у меня нет объяснения, почему они это сделали.Если я уберу это, будут ли какие-нибудь нежелательные побочные эффекты?