Я знаю, что этот вопрос устарел, но поскольку Google привел меня сюда, я добавлю эти ссылки
Этот ответ касается (A) аутентификации между поддоменами и (B) определения того, какой поддомен используется для потенциального перенаправления пользователя.
А.1. Если вы хотите разрешить все (подстановочные) поддомены *.myapp.com, это достигается добавлением одной строки в settings.py:
SESSION_COOKIE_DOMAIN=".myapp.com"
Подробно здесь (SO, 2009), здесь (SO, 2010) и в Документы Джанго
Примечание: теперь вход в систему не будет работать на локальном хосте, поэтому у вас есть два варианта входа и выхода на локальном хосте:
1: закомментировать эту строку в settings.py или
2: изменить / etc/hosts, чтобы включить следующее:
127.0.0.1 localhost
127.0.0.1 dev.myapp.com
Теперь вы можете посетить dev.myapp.com
в своем браузере, и на самом деле он будет общаться с 127.0.0.1, а не с вашим работающим веб-сайтом. (Теперь, через dev.myapp.com
, site1.myapp.com
, site2.myapp.com
и myapp.com
, если вы войдете/выйдете из одного, вы войдете/выйдете из них всех.)
А.2. Если вы хотите разрешить перекрестную аутентификацию только между этими двумя поддоменами, т. е. они не будут входить в систему site3.myapp.com
, тогда будет немного сложнее
Б. Для просмотра используемого поддомена Существуют более сложные пакеты для управления поддоменами в django, но вы можете просто грубо взглянуть на request.META['HTTP_HOST']:
try:
http_host = request.META['HTTP_HOST']
# alternative: http_host = request.get_host()
except KeyError:
http_host = None
print "Can't find HTTP_HOST"
if http_host and '.myapp.com' in http_host:
subdomain = http_host.split('.myapp.com')[0]
else:
subdomain = ''
Затем проверьте, довольны ли вы request.user
использованием этого subdomain
. Чтобы отправить их на другой поддомен, если хотите. Если вы выполнили A.1 или A.2 выше, в глазах вашего приложения они будут тем же пользователем (уже вошедшим в систему) в новом subdomain.myapp.com после перенаправления (им не нужно входить в систему). снова).
Пример: если пользователь создает учетную запись на ireland.myapp.com, и вы хотите, чтобы он всегда оставался на этом сайте, тогда, когда он попытается посетить usa.myapp.com, он все равно будет входить в систему, вы можете идентифицировать его и отправьте их обратно на ireland.myapp.com (вымышленный пример, а не метафора иммиграции!)
person
Mark
schedule
19.09.2015