Как я могу поделиться сессиями пользователей между несколькими доменами, используя Rails? - PullRequest
9 голосов
/ 08 ноября 2008

Кто-нибудь знает о каких-либо драгоценных камнях, учебных пособиях или решениях, позволяющих пользователю войти на веб-сайт в одном домене и автоматически предоставившим доступ к другим партнерским доменам в том же сеансе?

У меня запущено два приложения на рельсах, назовем их App-A и App-B. У App-A есть связанная с ним база данных, обеспечивающая регистрацию и вход в систему на App-A.com. Теперь я хотел бы предоставить всем этим пользователям с учетными записями App-A.com доступ к App-B.com, не заставляя их перерегистрировать или вручную входить на App-B.com отдельно.

Заранее спасибо за любую помощь! --Mark

Ответы [ 2 ]

5 голосов
/ 08 ноября 2008

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

Rails::Initializer.run do |config|
   ...  
 config.action_controller.session = {
   :session_key => '_portal_session',
   :secret      => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
  }
  ...
end

Сделайте то же самое в AppB. (не забудьте использовать тот же секрет)

Теперь у вас есть общие сессии. Допустим, вы используете restfull_authentication, который устанавливает переменную сеанса с именем user_id . Когда вы аутентифицируетесь в appA, он устанавливает user_id в сеансе. Теперь в appB вам просто нужно проверить, существует ли user_id в сеансе.

Это общая схема, вы можете разработать более подробно, используя эту идею.

1 голос
/ 08 ноября 2008

Если вы хотите создать решение единого входа для своих приложений, то я рекомендую взглянуть на решение RubyCAS . Его также можно использовать для обеспечения единого входа в другие приложения, не относящиеся к Rails, а также для интеграции аутентификации с LDAP или другими провайдерами аутентификации.

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