2010-07-08 99 views
0

我的应用程序有一个用户空间,曾经被URL访问像domain.com/~username,但我正在将其转换为使用子域的过程,而不是(username.domain.com )。但是,我遇到了一个问题,我希望有人可能会有一个如何解决问题的想法。从主域复制饼干到子域

当前,用户网站的访问者获取的表格的格式为user<id>_authentication(其中<id>是他们正在访问的网站的用户ID)的Cookie,该网站设置为拥有域www.domain.com。但是,现在我要切换到子域,我希望找到这些cookie并将它们转移到每个子域名为authentication的新Cookie,并使用该子域作为cookie域。但是,导轨cookies阵列没有找到主域cookie。

我知道如果旧饼干使用.domain.com作为域名,而他们会应用到子域名,并且会出现在cookies中,但这些cookie已经存在,并且我试图将更改作为为用户尽可能无缝 - 所以如果他们已经为一个站点准备了身份验证cookie,我希望他们不必在可能的情况下重新进行身份验证。

有没有什么办法可以从主域名中获取cookie,或者有没有人有另一个关于如何转移cookie的建议?

更新:对不起,我之前没有说清楚,只有当访问者通过在用户的网站上提交表单主动进行身份验证时才设置cookie。

回答

1

如果您更改cookie域以使其更加宽容(应用于更多子域),则无法读取旧的,更受限制的cookie,只能从以前的顶级域中读取。

您必须先阅读cookie,进行身份验证,然后再写一个新的更宽容的cookie,才能让子域读取cookie。

您可以在该功能之前推出您的迁移逻辑,并希望您获得大多数人。其余的将不得不手动重新认证。

+0

是的,我想有一种方法可以在迁移之前更新cookies,使其成为子域非特定的,但正如你所说,这仍然不会吸引每个人,因为它依赖用户不仅要去主站点,但在功能部署完成之前的某个截止日期之前访问每个经过身份验证的用户的网站。 – 2010-07-08 17:54:16

1

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

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

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

希望这有助于。

+0

对不起,我想我有点不清楚;只有访问者在用户的网站上主动验证身份(通过填写表单)才能设置cookie。重定向是我没有考虑过的一个好主意,但如果没有主域cookie存在,那么这不会导致额外的不必要的重定向? – 2010-07-08 15:49:29

+0

是的,但是旧的cookie只对MAIN域可用,所以没有其他的检查方式。这就是为什么我建议不要这样做...让他们重新认证。 – Fosco 2010-07-08 15:52:54