Токены идентификатора сессии в django без auth.models.User - PullRequest
0 голосов
/ 08 мая 2018

Я знаю, что можно настроить аутентификацию с помощью встроенного django login(request, user), request.is_authenticated, когда пользователь получает файл cookie sessionid и authenticate(request, username="foo", password="bar").

Однако, под этим интерфейсом django создает объект User в базе данных. Я аутентифицируюсь, используя другие средства, а именно LDAP. Я могу выбрать просто передавать имя пользователя и пароль для LDAP каждый раз, но наличие идентификатора сеанса будет идеальным.

Есть ли способ использовать тот же API login(), request.is_authenticated, authenticate(), но без использования модели User? Другая альтернатива тоже подойдет. У меня есть одно ограничение: я не хочу использовать другую библиотеку.

Спасибо!

1 Ответ

0 голосов
/ 08 мая 2018

Насколько я знаю, невозможно использовать среду аутентификации / авторизации djangos без модели User.

В той части, где документы говорят о настройке аутентификации , она всегда сосредоточена вокруг модели User (даже если это ваша пользовательская модель пользователя).


При этом вы могли бы взглянуть на что-то действительно хакерское: создание вашей пользовательской модели , которая не хранится в базе данных.

Для этого вам, вероятно, понадобятся настраиваемые поля и менеджеры, которые предотвращают вызовы базы данных, в то же время делая определенные поля доступными в модели (например, email и username). Я никогда не пробовал, но это должно быть возможно, переопределяя поведение djangos по умолчанию в нужных местах.


Но все эти усилия, вероятно, не стоят того. Просто напишите свой собственный бэкэнд аутентификации , который автоматически создает экземпляр User при успешной аутентификации на вашем источнике LDAP, чтобы вы могли "использовать весь потенциал модели django User" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...