Как я могу совместно использовать сеансы пользователя через несколько доменов с помощью направляющих?

Определите их как вспомогательный метод. Но лучший подход - определить их как методы класса в соответствующих классах. А затем позвоните им напрямую.

def user_relation_count(user)
  Relation.joins(account: :user).where(users: {id: user.id}).count
end

def user_orders_count(user)
  Order.joins(account: :user).where(users: {id: user.id}).count
end
9
задан Bob Aman 19 September 2009 в 14:02
поделиться

2 ответа

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

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 на сессии.

Это - полная схема, можно разработать больше использования этой идеи.

5
ответ дан 3 November 2019 в 05:39
поделиться

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

1
ответ дан 3 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: