Зачем django нужна база данных для пользовательских бэкэндов аутентификации?
Я реализовал пользовательскую аутентификацию django. Мой authenticate() возвращает такой объект пользователя return User(username=username, password=password)
, но я никогда не сохраняю объект User в базе данных.
Почему django docs рекомендует создавать базу данных с объектами пользователя? (https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend - "... лучший способ справиться с этим - создать объект User Django для каждого пользователя, который существует для вашего бэкэнда...")
Если я попытаюсь вызвать login (), в базу данных будет сделан вызов. Если логины хранятся в сеансах, зачем нужна база данных? (Использование кэшированных сессий)
2 ответа
Причина, по которой вам конкретно нужно сохранить User
Объект состоит в том, что приложения обычно создают отношения на уровне базы данных между объектами и пользователями (чтобы сохранить связь между несколькими запросами).
Простым примером будет журнал активности django.contrib.admin
, Он отображает недавнее поведение пользователей. Это работает только тогда, когда объект пользователя сохраняется в базе данных.
Многие приложения имеют внешний ключ к auth.User
; если эта таблица не заполнена, вы не сможете использовать эти приложения.