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

时间:2015-02-18 15:49:29

标签: magento session cookies login

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

Cookie域设置为.xyz.tld(或xyz.tld),没有差异。

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

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

1 个答案:

答案 0 :(得分:2)

问题是检查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

我为这个错误打开了Magento Issue #7015,所以这应该在即将推出的版本中修复!

更新:该错误仍然存​​在(02/2016)。有人在错误报告的评论中发布了不同的修补程序,您可能也想查看它:https://gist.github.com/piotrekkaminski/14f49b6ddcb69640d697