Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento Cookies更改阻止前端登录_Magento - Fatal编程技术网

Magento Cookies更改阻止前端登录

Magento Cookies更改阻止前端登录,magento,Magento,当客户尝试登录到Magento的前端时,他们会被重定向回登录页面,不会出现错误。问题似乎是写入了新cookie,然后在登录时立即被覆盖。以下是登录时设置的Cookies日志: Cookie frontend added. 0o94icitv247nhh6l7op2csoe4 .domain.com Cookie frontend deleted. 0o94icitv247nhh6l7op2csoe4 .domain.com Cookie frontend added. no81g

当客户尝试登录到Magento的前端时,他们会被重定向回登录页面,不会出现错误。问题似乎是写入了新cookie,然后在登录时立即被覆盖。以下是登录时设置的Cookies日志:

Cookie frontend added.  0o94icitv247nhh6l7op2csoe4  .domain.com 
Cookie frontend deleted.  0o94icitv247nhh6l7op2csoe4    .domain.com
Cookie frontend added.  no81giicmgscpkr14ho3m1rpv2  .domain.com
Cookie frontend changed.  0o94icitv247nhh6l7op2csoe4    .domain.com
Cookie frontend changed.  0o94icitv247nhh6l7op2csoe4    .domain.com
如果我手动将前端cookie编辑为第三行的值,则我已登录。你知道为什么第4行和第5行会发生变化吗

我认为它可能是一个覆盖了
Mage\u Core\u Model\u Session\u Abstract\u Varien
类的扩展,但是app/code目录的grep没有显示任何扩展该类的类

--更新--

我仍然有这个问题。我(使用XDEBUG/webgrind)挖掘了更多信息,发现
Mage\u Core\u Model\u Session\u Abstract\u Varien->start
被以下人员调用了两次:

Mage_Core_Model_Session_Abstract_Varien->init @ 162
Mage_Core_Controller_Varien_Action->preDispatch @ 490

看起来
preDispatch()
可能正在覆盖会话cookie。这有意义吗?我在Magento会话处理方面没有太多经验,所以我希望有人能在这里提供帮助。

我终于找到了双cookie的来源

TinyBrick Lightspeed页面缓存正在子域级别添加一个cookie,这会混淆TLD上的cookie:

        public static function buildCookie()
        {
                require_once 'app/Mage.php';
                $request = new Zend_Controller_Request_Http();
                session_set_cookie_params(
                         self::getCookieLifetime()
                        ,self::getDefaultCookiePath()
//                      ,$request->getHttpHost() // commented out to fix double cookie problem.
                        ,'.domain.com' // added to fix double cookie problem.
                        ,false
                        ,true
                );
                session_name('frontend');
                session_start();
        }

我终于找到了双重cookie的来源

TinyBrick Lightspeed页面缓存正在子域级别添加一个cookie,这会混淆TLD上的cookie:

        public static function buildCookie()
        {
                require_once 'app/Mage.php';
                $request = new Zend_Controller_Request_Http();
                session_set_cookie_params(
                         self::getCookieLifetime()
                        ,self::getDefaultCookiePath()
//                      ,$request->getHttpHost() // commented out to fix double cookie problem.
                        ,'.domain.com' // added to fix double cookie problem.
                        ,false
                        ,true
                );
                session_name('frontend');
                session_start();
        }

我认为Magento core中存在一个错误:

在Mage_Core_Model_Session_Abstract_Varien中有一个代码:

if (isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}
这实际上没有道理。应该是:

if (!isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}

这避免了使用双“前端”cookie。

在我看来,Magento core中存在一个错误:

在Mage_Core_Model_Session_Abstract_Varien中有一个代码:

if (isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}
这实际上没有道理。应该是:

if (!isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}

这就避免了使用双“前端”cookie。

我不知道这是否对您的具体问题有帮助,但是您应该检查为什么您的grep跳过了code/core/Mage/core/Model/Session/Abstract.php,或者为什么该文件中的类没有扩展Mage\core\Model\Session\Abstract\u Varien。(1.6.1,但可能适用于其他版本)对不起,我想我应该说在app/code/core之外没有扩展该类的类。也许你在php.ini、虚拟主机设置等中启用了会话自动启动?我不知道这是否对你的特定问题有帮助,但是您应该检查为什么您的grep跳过code/core/Mage/core/Model/Session/Abstract.php,或者为什么该文件中的类没有扩展Mage\u core\u Model\u Session\u Abstract\u Varien。(1.6.1,但可能适用于其他版本)对不起,我想我应该说在app/code/core之外没有扩展该类的类。也许您在php.ini、虚拟主机设置等中启用了会话自动启动?