Совместное использование аутентификации между форумом и основной CMS в Rails - PullRequest
1 голос
/ 06 июня 2010

У меня есть продукт на Rails-форуме, который находится на поддоменах моих клиентов (например, http://forum.customer.com).). На их основном сайте есть CMS и система аутентификации, а на моем продукте для форума - отдельная система аутентификации.способ "перекрестного входа" в эти системы? Я хочу, чтобы кто-то уже вошел в основную CMS для плавного (насколько это возможно) перехода в мой продукт.

1 Ответ

0 голосов
/ 06 июня 2010

Все зависит от того, как основной сайт отслеживает сеанс пользователя.

Обычно это делается с помощью куки; Я просто собираюсь предположить, что это так. Браузер сохраняет этот файл cookie с доменом, из которого он получен, и присоединяет его снова при любом новом запросе, поступающем в этот домен или его поддомен .

Вы захотите проверить, что cookie присоединен к домену customer.com, а не, например, www.customer.com. Это потому, что forum.customer.com является поддоменом первого, , но не вторым . В последнем случае вы не вообще увидите cookie в программном обеспечении вашего форума. Программное обеспечение CMS имеет некоторый контроль над тем, к какому домену прикреплен файл cookie.

У большинства браузеров есть возможность показать, какие куки хранятся для определенного сайта. Например, в Firefox есть опция «Информация о странице» в меню правой кнопки мыши. В Chrome вы можете нажать Ctrl + Shift + I , чтобы перейти к инструментам разработчика и просмотреть вкладку «Хранилище».

Файл cookie, вероятно, содержит одно из следующего:

  • Фактические данные, такие как имя пользователя.
  • Идентификатор сеанса, который CMS может найти в своей базе данных и таким образом получить имя пользователя.

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

Вы можете получить доступ к cookie в Rails по имени, просто используя cookies[:something] из своего контроллера. Это задокументировано в ActionController :: Cookies (который смешан с ActionController::Base).

Как только вы получите данные cookie, вам придется имитировать то, что делает ваша CMS. Вам, вероятно, придется (по порядку):

  • Проверка целостности файла cookie путем (повторного) применения хеш-функции к данным cookie и сравнения ее с хешем, включенным в файл cookie.
  • Подключение к базе данных CMS.
  • Возможно запросить идентификатор сеанса.
  • Запрос профиля пользователя.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...