Каков наилучший способ отделить логику аутентификации от кода, который по своей сути зависит от него?Django - отдельный код внутренней аутентификации от реализации
Общая проблема: django_auth_ldap не препопыляет таблицу пользователей, а проверяет подлинность LDAP и добавляет пользователей в таблицу при первом входе в систему.
Однако скажите, что мы пишем приложение, которое включает в себя добавление членов в проекты. Пользователи могут захотеть добавить других пользователей, которые существуют в LDAP, но ранее не вошли в систему, поэтому вам в основном требуется ввести имя пользователя в этом случае и запросить LDAP и базу данных, чтобы узнать, существует ли этот пользователь. Опять же, если мы пишем приложение для повторного использования, мы бы хотели, чтобы подпрограмма «lookup by username» настраивалась.
На работе у нас было два разных решения проблемы, которые прекрасно работают, но это своего рода странные решения.
- Сделать так, вы можете написать функцию get_user_by_username в settings.py, который делает все, что поиски вы хотите
- Дайте «appname.modelname» путь к прокси-модели auth.User вы создали, который ожидаемый/вынуждены иметь classmethod, который делает то же самое, как get_user_by_username
Я думаю, что первый из них является немного чище, так как он не вводит новых типов, но это все-таки странно, что нужно иметь в settings.py ,
Я думаю, что это более стандартный подход OO. ABCMeta Я думаю, что это намного больше, чем мне нужно. Если я структурировал его так, как Django, его классы Backend, которые устраняют необходимость в прокси-модели (которая, как я заметил, иногда может вызвать непредвиденные проблемы). – OEP