Несколько схем и пользователей PostgreSQL на Django с поддоменами - PullRequest
2 голосов
/ 05 ноября 2010

Я видел различные вопросы по многосайтовому и многоузловому Django, включая субдомены и конкретные схемы для каждого субдомена То, что я не видел, - это решение (или советы, чтобы я мог написать один) этой проблемы.

  1. Я использую Django + PostgreSQL на сайте, скажем, myapp.com
  2. Основной сайт myapp.com используется для регистрации компаний
  3. Зарегистрированная компания получает собственный поддомен, company.myapp.com, и входит в систему и работает оттуда.

Моя идея состоит в том, чтобы создать две исходные схемы в PostgreSQL.

  1. Схема "авторизация" для компаний и пользователей
  2. Схема "empty_company_template" с основными таблицами для компании, все пустые, но подключенные к нужным последовательностям и т. Д.

Когда регистрируется новая компания, я хочу, чтобы это произошло:

  1. Создание новой схемы для компании, производной от empty_company_template
  2. Создать нового пользователя БД для компании с именем company (название компании)
  3. Установить путь поиска для этого нового пользователя для компании, auth (нет доступа к empty_company_template, нет доступа к схемам других пользователей)

Мне кажется, это лучше, чем существующие решения, которые, кажется, зависят от одного пользователя базы данных для всего приложения (с доступом ко всем схемам). Однако я изо всех сил пытаюсь заставить это работать. Это действительно жизнеспособный подход? Может кто-то указать мне верное направление? Это Джанго, так что, возможно, это было сделано, и я просто не нашел его?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

У меня есть рабочее решение, которое делает все, кроме отдельных пользователей.

Это небольшая промежуточная программа (просто process_request), которая определяет поддомен и выполняет запрос SET search_path в базе данных. Пока мне этого достаточно.

Кто-нибудь заинтересован в коде, просто свяжитесь со мной. Я опубликую его где-нибудь, когда он будет окончательным.

РЕДАКТИРОВАТЬ 22 декабря 2010 г .:

Я опубликовал код в своем блоге на http://blog.dyve.net/django-subdomains-and-postgresql-schemas

0 голосов
/ 06 ноября 2010

Если вы хотите иметь отдельных пользователей БД, вам, вероятно, понадобятся отдельные экземпляры Django, иначе не будет никакого усиления безопасности.Эта модель потребует гораздо более сложного управления процессами.Я не думаю, что вы найдете готовое решение для такого приложения, так что вам, скорее всего, придется свернуть свое собственное.В противном случае, если вы не хотите тратить много времени, придерживайтесь единого пользователя для всего подхода к приложению.

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