Ruby on rails 如何使用Rails跨多个域共享用户会话?

Ruby on rails 如何使用Rails跨多个域共享用户会话?,ruby-on-rails,session,single-sign-on,production,Ruby On Rails,Session,Single Sign On,Production,是否有人知道有任何gem、教程或解决方案允许用户在一个域登录网站,并在同一会话中自动授予对其他合作伙伴域的访问权限 我有两个rails应用程序在运行,我们称它们为App-A和App-B。App-A有一个与之关联的数据库,为App-A.com的注册和登录提供了动力。我现在想让所有拥有App-A.com帐户的用户都可以访问App-B.com,而不需要他们重新注册或单独手动登录App-B.com 提前感谢您的帮助! --标记您可以在两个应用程序中设置相同的会话密钥。在appA environment.

是否有人知道有任何gem、教程或解决方案允许用户在一个域登录网站,并在同一会话中自动授予对其他合作伙伴域的访问权限

我有两个rails应用程序在运行,我们称它们为App-A和App-B。App-A有一个与之关联的数据库,为App-A.com的注册和登录提供了动力。我现在想让所有拥有App-A.com帐户的用户都可以访问App-B.com,而不需要他们重新注册或单独手动登录App-B.com

提前感谢您的帮助!
--标记

您可以在两个应用程序中设置相同的会话密钥。在appA environment.rb中更改会话密钥,如下所示

Rails::Initializer.run do |config|
   ...  
 config.action_controller.session = {
   :session_key => '_portal_session',
   :secret      => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
  }
  ...
end
在AppB中执行同样的操作。(记住使用相同的秘密)

现在您有了共享会话。假设您使用restfull\u身份验证,它设置一个名为user\u id的会话变量。当您在appA中进行身份验证时,它会在会话中设置用户id。现在,在appB中,您只需验证会话中是否存在用户id


这是总体架构,您可以使用此想法详细阐述。

如果您想为您的应用程序创建单点登录解决方案,那么我建议您查看解决方案。它还可以用于为其他非Rails应用程序提供单点登录,还可以将身份验证与LDAP或其他身份验证提供商集成。

据我所知,只有当两个应用程序位于同一个域上时,这才有效?没错,此解决方案无法跨多个域工作。