【发布时间】: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