2016-08-04 3 views
0

Вот сценарий:Как сохранить сеанс в приложении Rails с поддержкой нескольких доменов?

У меня есть приложение Rails, работающее на одной машине. Приложение для этого обсуждения - это система управления контентом и будет использоваться для обслуживания нескольких сайтов в сети. Он может быть достигнут в app.com. Пользователи должны иметь возможность настраивать собственный домен для своего сайта.

То, с чем я борюсь, заключается в том, как поддерживать сеанс, чтобы пользователь мог только войти в сеть один раз. Если они посещают какой-либо сайт в сети, их сеанс должен поддерживаться. (Технически, пользователь по-прежнему находится на том же сайте, что и пользовательский URL-адрес для своего сайта.)

Как сохранить сеанс для пользователя на всех сайтах в приложении?

Основываясь на том, что я читал о куки-файлах, это сложно. Файлы cookie b/c не могут использоваться совместно с уникальными доменами. То, что я ищу, помогает понять части проблемы при игре. Я играю, чтобы писать Rack Middleware или добавлять другие технологии перед приложением, если это то, что нужно. В конце концов, я бы хотел, чтобы каждый из этих доменов использовал HTTPS, но давайте начнем с этого момента.

ответ

0

Вы можете передавать сеансы через серию перенаправления.

Предположим, у вас есть приложение с доменом platform.com, и на этой платформе вы размещаете пользовательские домены, такие как customdomain.com. Как описано в вопросе, всякий раз, когда пользователь входит в систему по адресу platform.com, они должны быть зарегистрированы во всех размещенных доменах.

Основная идея работает следующим образом:

  1. признаки пользователя, чтобы platform.com
  2. Пользователь запрашивает страницу на customdomain.com
  3. сервер App видит запрос от customdomain.com и видит, что пользователь не авторизован до customdomain.com.
  4. Сервер приложений перенаправляет platform.com/get_session?redirect=customdomain.com
  5. сервер
  6. приложение перенаправляет customdomain.com/set_session?login_token=<HASH>
  7. Сервер приложений устанавливает куки сессии в ответ на set_session

Voila !! Теперь сеанс пользователя переносится с platform.com на customdomain.com.

Предостережение: здесь подробно описывается, когда приложение решает перенаправить. Вам нужно добавить логику, чтобы убедиться, что вы не закончите бесконечный цикл перенаправления.

Смежные вопросы