Как я могу создать единый вход и профиль для сети из трех сайтов, используя 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 для данных аутентификации и сеанса, и другую, специфичную для данного сайта.