Реализация нескольких систем входа/регистрации в Django для разных типов пользователей
Я работаю над проектом Django (приложение для доставки еды), где мне нужно реализовать несколько систем входа/регистрации для трех типов пользователей (в одном проекте): клиентов, продавцов и водителей. Каждый тип пользователей имеет свой собственный набор моделей, таких как Клиент, Продавец, Водитель, а также связанные с ними мета-моделями, такими как Seller Group / permissions / roles и т. д. Кроме того, для каждого типа существуют отдельные системы разрешений.
Моя цель - иметь различные методы входа/регистрации для каждого типа пользователей. Например:
- Клиенты входят в систему/регистрируются с помощью мобильного OTP.
- Продавцы входят в систему/регистрируются, используя рабочую электронную почту и пароль.
Я разделил свой проект на отдельные приложения для каждого типа пользователей (покупатели, продавцы, водители), и у меня есть пользовательские модели пользователей models.py, определенные в каждом приложении (AbstractUser, UserManager, PermissionMixins и т.д.). Но, насколько я знаю, при использовании пользовательского auth я должен определить AUTH_USER_MODEL
в settings.py, где я могу упомянуть только одну модель.
Как я могу реализовать эти различные методы входа/подписки и обеспечить, чтобы процессы аутентификации и авторизации были адаптированы к каждому типу пользователей? Существуют ли пакеты Django или лучшие практики для работы с такими сценариями?
Любое руководство, примеры кода или рекомендуемые ресурсы были бы очень признательны.
Заранее спасибо!
Django следует другому методу, который заключается в том, чтобы поместить всех пользователей в одну модель и различать их по флагам, вот как он отделяет is_superuser от is_staff и обычных пользователей.
Я предлагаю объединить пользователей и разделить их полем user_role
, направляющим их на разные домашние страницы.
Другим решением является расширение модели пользователя (как указано здесь), поэтому вы помещаете общие атрибуты в одну модель и создаете модель для каждой роли, чтобы вы аутентифицировали пользователей по базовой таблице.
Наконец, вы можете создать свой пользовательский бэкэнд и обработать выборку нужной таблицы для аутентификации пользователя.
Для меня первое решение - объединить их всех в одну модель и направлять на разные домашние страницы в зависимости от роли.