Отдельные сайты Django с общим бэкэндом аутентификации / регистрации - PullRequest
6 голосов
/ 07 сентября 2011

Мне нужно разделить мое текущее приложение Django на два сайта.

Сайт A будет содержать общедоступный сайт, который будет содержать все статические страницы и систему регистрации.

Другой сайт - Сайт B - это сайт для зарегистрированных пользователей.Они также могут войти на сайт приложения через сайт B.

Если я не ошибаюсь, я могу использовать фреймворк django.contrib.sites для выполнения задачи с несколькими сайтами, но может иметь общий сервер аутентификации / регистрации?

Как мне это сделать?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Платформа Django django.contrib.sites хороша, если оба сайта работают на одном сервере и имеют доступ к одной и той же базе данных.Если у вас есть распределенное приложение (разные сайты на разных хостах или разные сайты в разных базах данных), вы можете прибегнуть к решениям с единым входом.

Я использую OpenID с пользовательским провайдером для централизации входов в систему между приложениями, работающими наразные базы данных.Другие решения включают CAS ( поставщик и потребитель ).

2 голосов
/ 07 сентября 2011

Для этого случая у вас будет 2 файла settings.py с именами settings_A.py и settings_B.py, которые определяют from settings import *

A будет иметь SITE = 1, а B будет SITE = B. затем вы можете установить эти файлы в ваших конфигурациях apache, установив переменную среды для каждого виртуального хоста DJANGO_SETTINGS_MODULE = settings_A и DJANGO_SETTINGS_MODULE = settings_B

Затем вы настраиваете приложение contrib.sites, в котором ваши 2 доменных имени привязаны к соответствующему идентификатору сайта, и ваши планшеты смогут быть привязаны к одному или обоим сайтам.

Наконец, в settings_A.py settings_B.py вы либо указываете отдельный корневой urlconfs, либо используете команду settings.SITE в ваших urlconfs, чтобы включать и отключать группы URL для каждого сайта.

Надеюсь, это поможет

РЕДАКТИРОВАТЬ: Чтобы уточнить: если вы используете одну и ту же базу данных и SECRET_KEY между обоими сайтами, вы можете использовать одни и те же учетные записи пользователей между ними. Если сайты имеют форму example.com и private.example.com, тогда установка SESSION_COOKIE_DOMAIN на .example.com позволит переносить сеанс между обоими сайтами.

0 голосов
/ 07 сентября 2011

Вы можете использовать (внешнюю) аутентификацию LDAP для обоих сайтов.Вам понадобится сервер LDAP, доступный для обоих сайтов.Я никогда не использовал это, и я не знаю, насколько хорошо он интегрируется с аутентификацией Django.Смотри http://packages.python.org/django-auth-ldap/

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