Мультидоменные сессии для джанго

  • By admin
  • Пн 23 Январь 2017

1. Для чего нужно и в чем проблема

Допустим, у нас есть интернет-магазин shop.ru. Начальство решает купить домен shop.com для выхода на международный рынок. В интернет-магазине есть регистрация, вход по логину-паролю. Есть много ссылок на страницы shop.ru. Допустим, посетитель зарегистрировался на shop.com, положил товар в корзину, потом как-то перешел на страницу shop.ru. Его корзина будет пуста и этому человеку заново нужно будет вводить логин и пароль. В идеале нужно, чтобы независимо с какого сайта на какой перешел посетитель, нужно, чтобы содержимое корзины и данные автоизации сохранились.

Проблема в том, что такая информация как авторизирован человек на сайте или нет, какие товары он положил в корзину хранятся в сессии. А сессия работает на файлах cookie, которые из-за политики безопасности веб-браузеров жестко привязаны к домену. То есть файл cookie для домена shop.ru можно получить для субдомена product.shop.ru, но нельзя для shop.com.

2. Существующие решения

# django-xsession # django-shared-session

django-xsession

Принцип этой библиотеки построен на том, что если на текущем сайте пользователь не авторизирован, а на другом авторизирован, то с другого сайта загружается javascript код, который создает файл cookie-сессию с таким же идентификатором, как на авторизированном сайте.

Из достоинства хочу отметить простоту самого модуля. Недостаток: могут быть "вечные" перезагрузки если сессия была как-то установлена на обоих сайтах.

django-shared-session

Эта библиотека работает по обратному принципу: на сайте, где авторизовался пользователь загружается javascript с других сайтов. При этом в get запросе передается шифрованная информация о текущей сессии. Эта шифрованная информация расшифровывается на серверах других сайтов, и для этих сайтов устанавливается сессия.

Приятная библиотека. Работает стабильно.