将Cookie从主域复制到子域

时间:2010-07-08 15:33:19

标签: ruby-on-rails cookies subdomain

我的应用程序有一个用户空间,以前通过domain.com/~username等网址访问,但我正在将其转换为使用子域名(username.domain.com)。但是,我遇到了一个问题,我希望有人可能知道如何解决这个问题。

目前,用户网站的访问者会获得user<id>_authentication形式的Cookie(其中<id>是他们正在访问的网站的用户ID),该网址设置为域名www。 domain.com。但是,现在我正在切换到子域,我想找到这些cookie并将它们转移到每个子域名为authentication的新cookie,使用子域作为cookie域。但是,rails cookies数组找不到主域cookie。

我知道如果旧的Cookie使用.domain.com作为域名,那么它们将适用于子域名并存在于cookies中,但这些Cookie已经存在,而且我我试图让用户尽可能无缝地进行更改 - 所以如果他们已经为网站提供了身份验证cookie,我希望他们不必重新进行身份验证。

我有什么方法可以从主域获取cookie,或者是否有人有另外的建议我如何转移cookie?

更新抱歉,之前我没有说清楚,只有当访问者通过在用户网站上提交表单来主动验证自己时,才会设置Cookie。

2 个答案:

答案 0 :(得分:1)

我个人认为他们应该重新验证..它只会发生一次,然后他们将拥有新的“.domain.com”cookie。

但是......实现这一目标的一种方法是检查新的cookie,当找不到它时,重定向到主域的新页面,提供返回URL。

在该新页面中,检查旧样式cookie,设置新样式cookie,并重定向到原始URL。如果他们没有旧式cookie,请重定向到登录区域。

希望这会有所帮助。

答案 1 :(得分:1)

如果您将cookie域更改为更宽松(适用于更多子域),则除了从以前工作的顶级域之外,您无法读取旧的,更受限制的Cookie。

在子域读取cookie之前,您必须先读取cookie,进行身份验证,然后再写一个更宽松的cookie。

您可以在功能发布之前推出迁移逻辑,并希望您能够吸引大多数人。其余的必须手动重新验证。