ruby-on-rails - 如何使用Rails在多个域中共享用户 session ?

标签 ruby-on-rails session single-sign-on production

是否有人知道任何瑰宝,教程或解决方案,使用户可以登录一个域中的网站并在同一 session 中自动获得对其他合作伙伴域的访问权限?

我有两个正在运行的Rails应用程序,我们称它们为App-A和App-B。 App-A有一个与之关联的数据库,可以在App-A.com上进行注册和登录。我现在想授予所有具有App-A.com帐户的用户访问App-B.com的权限,而不必让他们重新注册或分别手动登录到App-B.com。

在此先感谢您的帮助!
- 标记

最佳答案

您可以在两个应用程序中设置相同的session_key。在appA environment.rb中,像这样更改session_key

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

在AppB中执行相同的操作。 (请记住使用相同的 secret )

现在,您已经共享了 session 。假设您使用restfull_authentication,它会设置一个名为 user_id 的 session 变量。在appA中进行身份验证时,它将在 session 中设置user_id。现在,在appB中,您只需要验证 session 中是否存在user_id。

这是整体架构,您可以使用此想法进行详细说明。

关于ruby-on-rails - 如何使用Rails在多个域中共享用户 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274384/

相关文章:

java - Spring Security openId 支持和用户解除认证

ruby-on-rails - 改变 Rails 环境。到生产

ruby-on-rails - 是否可以清除 Spring gem 的缓存?

ruby-on-rails - bundle exec 或不 bundle exec

session - ColdFusion session 与 J2EE session

single-sign-on - "Sign in with Slack"每次都提示用户权限

java - ForgeRock(针对 SSO)登录和注销的预期行为

ruby-on-rails - Rails 验证未在嵌套模型上运行

session - 默认 session 过期超时?

php - 如何销毁 PHP 中的特定 session 变量?