Как я могу создать единый вход и профиль для сети из трех сайтов, используя Django?

Как я могу создать единый вход и профиль для сети из трех сайтов, используя Django?

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

Есть ли элегантное решение этой проблемы?

3 ответа

Решение

Пусть сайты делятся базами данных. Следовательно, они будут иметь общую пользовательскую таблицу.

Взгляните на структуру сайтов django: http://docs.djangoproject.com/en/dev/ref/contrib/sites/

Зависит от вашего сервера (ов).

Все ли сайты имеют доступ к одной и той же БД? Тогда воспользуйтесь ответом dcrodjer.

Если нет, вы можете внедрить службу единого входа в стиле OAuth, с которой другие сайты проходят аутентификацию.

Пример: site1.example.com site2.example.com site3.example.com siteN.example.com

Будет ли авторизация против oauth.example.com

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

site1.mydomain.com site2.mydomain.com site3.mydomain.com

- где вход осуществляется на mydomain.com.

По сути, mydomain.com должен обслуживать небольшую страницу Django, которая реализует только форму входа в систему и поддерживает сеанс для домена ".mydomain.com" (обратите внимание на начальную точку - она ​​необходима для распространения сеанса на субдомены site1..3). Поэтому, если вы войдете в mydomain.com, вы фактически войдете во все три дочерних сайта.

И самый простой способ обмена данными аутентификации и сеанса на стороне сервера - заставить сайты 1,2,3 использовать две базы данных: одну небольшую базу данных, совместно используемую с mydomain.com для данных аутентификации и сеанса, и другую, специфичную для данного сайта.

Другие вопросы по тегам