会话Cookie-如果商店位于根域,则Magento登录不起作用

会话Cookie-如果商店位于根域,则Magento登录不起作用,magento,session,cookies,login,Magento,Session,Cookies,Login,我有一个奇怪的问题。 将店铺转移到live domainxyz.tld后,用户和管理员无法登录 cookie域被设置为.xyz.tld(或xyz.tld),没有差异 未设置cookie域允许登录,但这会导致有时存储两个具有相同名称和不同子域的cookie的问题 此外,如果没有cookie域,则根本无法登录Safari。问题在于检查magento中父域的cookie。 如果店铺位于您的根域(第二级域),并且cookie域设置为相同,则magento始终认为每个cookie都来自父域,并在创建后立即

我有一个奇怪的问题。 将店铺转移到live domain
xyz.tld
后,用户和管理员无法登录

cookie域被设置为
.xyz.tld
(或
xyz.tld
),没有差异

未设置cookie域允许登录,但这会导致有时存储两个具有相同名称和不同子域的cookie的问题


此外,如果没有cookie域,则根本无法登录Safari。

问题在于检查magento中父域的cookie。 如果店铺位于您的根域(第二级域),并且cookie域设置为相同,则magento始终认为每个cookie都来自父域,并在创建后立即删除每个会话

修复很容易

在文件
app/code/core/Mage/core/Model/Session/Abstract.php
中查找:

            // Delete cookies with the same name for parent domains
            if (strpos($currentCookieDomain, $host) > 0) {
                $this->getCookie()->delete($this->getSessionName(), null, $host);
            }
并将其替换为:

            // Delete cookies with the same name for parent domains
            if (strpos($currentCookieDomain, $host) > 1) {
                $this->getCookie()->delete($this->getSessionName(), null, $host);
            }
这不会产生任何新问题,因为不存在比域长一个字符的子域。每个子域必须至少包含一个字母和圆点,以将其与域分开。唯一比
xyz.tld
长一个字符的是另一个域,或者
.xyz.tld

我打开了这个错误,所以这应该在即将到来的版本中修复

更新:漏洞仍然存在(2016年2月)。有人在错误报告的评论中发布了一个不同的修复程序,您可能也想查看它: