我有一个奇怪的问题。
将商店转移到实际域xyz.tld
后,用户和管理员无法登录。
Cookie域设置为.xyz.tld
(或xyz.tld
),没有差异。
不设置cookie域允许登录,但这会导致有时存储两个具有相同名称和不同子域的cookie。
此外,如果没有cookie域,则根本无法登录Safari。
答案 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