Множественные таблицы сессий django
Приложение требует две модели пользователей для аутентификации. Первая - модель AUTH USER, которая имеет имя, электронную почту и пароль, а вторая - модель Account, которая имеет связь внешнего ключа с моделью AUTH USER. PermissionsMixin наследуется моделью аккаунта, поэтому все группы и разрешения относятся к ней, а не к модели AUTH USER.
Все остальные модели и представления связаны с моделью Accounts.
Регистрация пользователя выполняется один раз с использованием модели AUTH USER. Но вход в систему должен происходить в следующие этапы.
- Session authentication for AUTH USER model with email and password which will return session cookies. (say auth cookie). Only purpose of this cookie is to the remember the user until he logins using Account model and cannot be used to access anything else.
- Using the auth cookie, user gets the list of accounts from the accounts table associated with his AUTH USER entry
- User sends the account_id along with the auth cookie.
- Backend returns new session cookie (say account cookie) for that user account and user will have all the permissions associated with that account.
Проблема: Django session framework аутентифицирует только по модели AUTH USER, поэтому как я могу создать сессию аккаунта & cookie во второй раз для модели аккаунта? Как я могу иметь несколько таблиц сессий для аутентификации?
Почему нельзя установить cookie на текущую сессию? Я не совсем понимаю необходимость нескольких сессий.
Вы также можете расширить сессию, поддерживаемую базой данных, по своему усмотрению: https://docs.djangoproject.com/en/dev/topics/http/sessions/#extending-database-backed-session-engines
Посмотрите на приведенный там пример.
Я согласен с предыдущим ответом, я не вижу необходимости в нескольких сессиях, будь у вас 2 модели или сотня. У вас уже есть объект сессии, и вы можете проверить на нем практически все, что пожелаете: выбранный аккаунт(ы), дополнительный пароль, подтверждение возраста и ограничить доступ с помощью миксинов или промежуточного программного обеспечения.