Сессии Django сбрасываются при перенаправлении с другого домена - PullRequest
7 голосов
/ 02 сентября 2010

Когда пользователь посещает мой домен, django выдает идентификатор сеанса. Когда он пытается сделать Oauth с Facebook, он нажимает кнопку на моем сайте, которая перенаправляет на Facebook.com. Facebook перенаправляет обратно на мой домен, но в этот момент сеанс пользователя теряется, и Django, похоже, выдает новую переменную сеанса.

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

У меня есть подозрение, что это может быть поведение, связанное с защитой django XSS. Как сделать так, чтобы информация о пользователе сохранялась, когда пользователь покидает наш сайт, чтобы войти на Facebook?

Ответы [ 2 ]

13 голосов
/ 02 сентября 2010

Возможно, вы захотите подтвердить, что файлы cookie имеют один и тот же домен при создании.Это может иногда вызывать проблемы.Если вы заходите на веб-сайт www.example.com, а обратный вызов OAuth указывает на example.com, возможно, у вас есть два отдельных файла cookie: один для www.example.com и один для example.com

Включите «Всегда спрашивать» в своем браузере и обратите внимание на детали cookie.Убедитесь, что значение поля «Host:» одинаково оба раза.

Исправление вводит что-то вроде .example.com для SESSION_COOKIE_DOMAIN в вашем файле settings.py.

3 голосов
/ 25 октября 2011

Я также только что обнаружил, что если у вас два приложения Django, запущенные в одном домене, во избежание коллизии cookie вы можете установить SESSION_COOKIE_NAME по-разному для каждого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...