Мультидоменные сессии для джанго
- 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-сессию с таким же идентификатором, как на авторизированном сайте.
Из достоинства хочу отметить простоту самого модуля. Недостаток: могут быть "вечные" перезагрузки если сессия была как-то установлена на обоих сайтах.