【问题标题】:Transfer cookie between domains / browsers in Rails在 Rails 中的域/浏览器之间传输 cookie
【发布时间】:2012-03-13 19:04:18
【问题描述】:

为了在多个域之间“共享”同一个会话,我希望两个会话具有相同的数据库/内存缓存键。

例如,我希望 foo.com 和 bar.com 基本相同。显然,如果用户独立访问两个域(访问 foo.com,登录,然后键入 bar.com),这是不可能的,但是如果我从一个重定向到另一个,这应该是可能的,例如

bar.com/x 重定向到 foo.com/y?_cookie_key=abc

foo.com 上的一些中间件可以检测到 _cookie_key 参数,然后使用密钥 abc 从 cookie 存储中检索会话,而不是使用其他方式。中间件将根据该密钥设置当前会话,并将其设置为该域/浏览器的 cookie 中的新 cookie 存储密钥。

虽然这在理论上看起来是可行的,但它似乎也有点麻烦,并且可能需要 hacking rack。我希望以前有人这样做过,可以提供一些指导或威慑。

【问题讨论】:

  • foo 上设置的 cookie 不会转移到 bar 上不是问题吗?如果您将会话存储在共享的 db/redis/etc 而不是 cookie 中,则可以使用会话 ID 重定向。但 cookie 仍需要存储一些凭据。我也对专家的答案感兴趣

标签: ruby-on-rails cookies rack


【解决方案1】:

假设您有一个中心域和多个使用相同代码/数据库的停放域

我认为你可以检查 server_name 是否是主域,如果不是,有一个中间件脚本, 您通过 cookie 的 get vars set data 传递 301 重定向,因此用户被重定向到那里 并从那里重定向回referrel链接,添加一个get标志以停止重定向循环 (检查是否在主检查时取消设置此标志)

如果所有这些帖子和重定向都是通过 ajax 发生的,用户将永远看不到任何东西......

【讨论】:

    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多