Django - Мультитенантная архитектура. Как создать несколько пользователей для одного приложения - PullRequest
0 голосов
/ 21 июня 2020
myproject
 |- myapp

Я создал проект django, в котором есть приложение, которое выполняет просмотр и добавление данных в базу данных c. Теперь я хочу создать несколько пользователей, которые могут использовать это приложение со своими данными. Как лучше всего это сделать.

Допустим, есть 3 пользователя user1, user2, user3. Пользователь1 работает в компании 1, пользователь 2 работает в компании 2, а пользователь 3 - в компании 3. Так что у каждого пользователя свои данные.

В настоящее время я планирую это сделать. Я копирую код myapp и создаю 3 приложения, соответствующие каждому пользователю. Итак, каталог проекта выглядит примерно так:

myproject
  |- myapp
  |- myappuser1
  |- myappuser2
  |- myappuser3

Итак, теперь у меня есть 3 приложения с аналогичной функциональностью, и каждый из пользователей имеет свои собственные данные. Теперь проблема в том, как ограничить доступ, чтобы каждый пользователь мог видеть свое приложение. Например, user1 должен иметь возможность видеть только содержимое myappuser1, а user2 должен видеть только содержимое myappuser2. Как я могу это сделать ? Я пробовал создавать группы в django admin, но это дает мне разрешения только на редактирование доступа к моделям в myapp. Это не ограничивает пользователя для просмотра страниц других пользователей.

Вариант 2: Создайте отдельный проект django для каждого пользователя. Это снимает ограничение пользователя, но для развертывания в heroku я должен зарегистрировать каждое из них как приложение, а затем мне нужно создать уникальную страницу входа, через которую каждый клиент может войти в систему, иначе я должен дать каждому пользователю другой URL-адрес для входа.

Подскажите, пожалуйста, лучший способ?

1 Ответ

0 голосов
/ 22 июня 2020

Если вы действительно ищете мультитенантную архитектуру, я бы посоветовал вам взглянуть на библиотеку django -tenant-schemas .

Я думаю, вы используете термин пользователей в широком смысле и означают, что они являются пользователями, принадлежащими клиенту. Так, например, у вас есть приложение с тремя клиентами

  • A (у него есть пользователи A1, A2, A3)
  • B (у него есть пользователи B1, B2, B3)
  • C (У него есть пользователи C1, C2, C3)

Таким образом, когда пользователь C3 входит в систему, он / она должен иметь возможность просматривать данные только для клиента C а не клиента A / B.

Если это действительно ваше требование, вы можете взглянуть на библиотеку, которую я предлагал ранее.

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