【问题标题】:How to share sessions between different domain names in same rails app and same server?如何在同一 Rails 应用程序和同一服务器中的不同域名之间共享会话?
【发布时间】:2016-06-29 16:11:53
【问题描述】:

我有两个域,例如“example.com”和“website.com”。这些域命中与单个数据库连接的same serversame Rails 4 app。通过使用路由约束,我已重定向到所需的域 url。这个 Rails 应用程序通过 Apache 通过乘客运行。

如果用户登录到example.com,则需要直接与website.com 共享登录会话。不仅是身份验证会话,而且如果我在登录前在“example.com”中设置任何会话变量,该会话也应该与“website.com”共享。 (反之亦然)

例子:

example.com 中的 session[:example] = "1234",该会话应与 website.com 共享

我在 Rails 中使用“设计”进行灵活的身份验证。

【问题讨论】:

    标签: ruby-on-rails apache session ruby-on-rails-4


    【解决方案1】:

    我相信,没有简单的方法可以做到这一点。 Rails 会话基于 cookie,并且 cookie 不能在域之间共享。 (它们只能在子域之间共享,例如 api.someapp.comsomeapp.com)。

    对于经过身份验证的用户,您可以使用/构建某种 SSO 解决方案,它将会话存储在服务器上并为使用的每个域发出某种会话 ID。

    对于未经身份验证的用户,您可以选择您的一个域作为“主要”域,并向该域执行一个小的 jsonp/iframe/whatever 请求,这样您就可以在域之间共享数据。

    但是所有这些东西都比使用现有的 Rails 会话要复杂得多。

    【讨论】:

      【解决方案2】:

      Someone share this idea 在另一个 SO 问题上使用 iframe。虽然没试过。 另外,here is another solution 使用了 Devise 可验证的功能,看起来更干净。

      【讨论】:

        猜你喜欢
        • 2014-04-16
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 2015-06-27
        • 2020-06-11
        • 2011-03-01
        • 1970-01-01
        • 2011-07-16
        相关资源
        最近更新 更多