Я работаю над проектом Django, который возьмет на себя фирмы как клиенты, и каждому клиенту будет разрешено создавать несколько пользователей. Затем этим пользователям могут быть назначены разные разрешения или роли.Разрешения Django для разных клиентов
Уловка заключается в том, что тип разрешений зависит от клиентов, то есть они не такие простые, как чтение, запись, удаление. Следовательно, у одного клиента может быть только 5-10 типов разрешений, а у другого может быть 100.
Встроенная база разрешения Django напрямую не поддерживает мою USECASE, так это то, что я придумал:
- Создать главное приложение Джанго в котором находится модель пользователя
- Для каждого нового клиента, создать новое приложение django с только models.py
- В Model.py есть только одна модель (на данный момент), которая сама по себе содержит разрешения, специфичные для этого клиента, как объяснено here.
- Теперь я могу назначить каждому пользователю разрешения в зависимости от того, с каким клиентом находится пользователь.
Пока я его не тестировал, это должно сработать. Решение выглядит масштабируемым, но есть много несоответствий, и это не похоже на правильный способ сделать это. Есть ли работа?
Обновление: django-guardian похоже, что это может помочь, а не как.
Обновление: Я думаю, что я объясню всю архитектуру, потому что текущее решение не работает непосредственно для нее.
- Имеются потоки данных временных рядов с данными, поступающими через равные промежутки времени. Каждый клиент может иметь от 100 до более 1000 таких потоков. Однако эти потоки не сохраняются в БД веб-серверов, а сохраняются в каждом клиенте разные БД.
- Теперь пользователь может иметь привилегии для просмотра всего, одного или некоторых из вышеперечисленных потоков. Клиент позволяет нам узнать о типе пользователя, которого они хотят создать, и мы создаем его соответствующим образом.
- Для целей аутентификации лучше иметь всех пользователей в одной таблице. Но для авторизации имеет смысл иметь каждого клиента в отдельной таблице. Лучше всего, на мой взгляд, отделить клиентов.
- Немного не по теме, но мы смотрели на предоставление каждому клиенту отдельного со-домена, такого как client1.mysite.com, client2.mysite.com и т. Д., И, следовательно, у нас есть свобода развертывания различных веб-серверов для каждого клиента и, следовательно, настроить его для каждого клиента. Кроме того, это помогает хранить данные каждого клиента по-разному.
Слушайте, слушайте! Я думаю, что ваш ответ должен быть принят, потому что это правильный ответ. Одна вещь, которую я хотел бы добавить: Админ-сайт предназначен только для доверенных пользователей. Google: «django admin trusted users». – allcaps
Я обновил свой вопрос, чтобы сделать его более понятным, с чем я имею дело. – vinayakshukl