【问题标题】:Can I share a cookie between multiple domains pointing to the same Rails app?我可以在指向同一个 Rails 应用程序的多个域之间共享一个 cookie 吗?
【发布时间】:2013-10-18 17:29:35
【问题描述】:

我有 x.com 指向 apple.y.com,另外还有 one.y.comtwo.y.com强>。我希望访问 x.com、one.y.com 或 two.y.com 的用户共享相同的会话。这可能吗?如果不是,最好的妥协是什么?

【问题讨论】:

    标签: ruby-on-rails cookies


    【解决方案1】:

    one.y.comtwo.y.com 可以通过将 cookie 域设置为 .y.com 来共享 cookie。这将在 y.com 的所有子域之间共享 cookie。

    但是,x.com 不能直接与y.com 共享 cookie。有一个使用重定向的解决方案,但实施起来很棘手——http://www.codeguru.com/csharp/csharp/cs_internet/article.php/c19417/Sharing-Cookies-Across-Domains.htm(示例在 ASP.net 中,但您可以将解决方案应用于 RoR)。

    【讨论】:

    • @MikeAtlas:嗯,这就是 Stack Overflow 之类的网站的魅力所在。您可以花不到 10 秒的时间在 Google 上搜索更新的链接并编辑答案,而不是因为链接过期而投反对票。
    • 最好只在你的帖子中给出代码示例,OP 也可以在 google 上搜索 10 秒。另外,您真的认为 ASP.NET 解决方案可以很好地回答 RoR 问题吗?
    • @Mike:在没有 RoR 解决方案的情况下,易于遵循的 ASP.NET 是一个足够好的答案。我已经从我自己不熟悉的语言中移植了很多次代码,当我能得到的时候,我很感激一个半解决方案。我同意,代码示例会更好,但不是特别精通 RoR,我给出了我能给出的最佳答案,即描述解决方案。我的答案的第一部分可能已经解决了 OP 的问题,具体取决于 x.com -> apple.y.com 的工作方式。欢迎您提供自己的解决方案,因为这不符合您的标准 ;-)
    【解决方案2】:

    要让使用相同域的应用程序使用相同的会话 cookie 工作,您可以在环境配置文件中进行配置。我为我的一些应用程序这样做。这是针对 Rails 2.3.5 的应用程序,Rails 3 应该是一样的,但我并不肯定。

    首先,在config/initializers/session_store.rb 中,确保:

    # ActionController::Base.session_store = :active_record_store
    

    被注释掉了。

    接下来,您的所有应用程序都应该使用相同的密钥和秘密,在同一个文件中设置:

    ActionController::Base.session = {
      :key         => '_myapp_session',
      :secret      => 'some really long string of hex'
    }
    

    最后,配置环境文件使用同一个域:

    config/environments/development.rb

    config.action_controller.session = { 
      :domain => ".rails.local" 
    }
    

    config/environments/production.rb

    config.action_controller.session = { 
      :domain => ".myapp.com" 
    }
    

    【讨论】:

    • 这仍然不适用于 x.com 和 y.com。为什么不能使用 active_record_store?
    • 编辑添加它只能使用相同的域。使用活动记录存储可能适用于不同域上的应用程序,但您可能必须在两个应用程序上使用相同的数据库,一旦他们将 rails 2.3 移动到机架,我就无法真正开始工作,这就是我选择的原因具有共享密钥和秘密的会话 cookie。
    • 这不回答任何 OP 问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多