Cookie不稳定的登录问题
这将是一个漫长的... 由于Cookie管理错误,我遇到了错误的登录失败错误。首先,我正在管理一家封闭式商店(B2B),客户必须先在其中登录才能看到目录。每个未注册的访问都将重定向到登录页面,但是有时,即使用户名和密码正确,客户也无法登录。我说“用户名”是因为我使用Diglin_Username扩展名和StoreRestricition插件来实现所需的行为。发生的是,有时我发现Magento留下了两组不同的Cookie,它们分别指向两个不同的域(例如,.www.abc.com和.abc.com)。 看完这篇文章早期会话实例从大艾伦风暴,并在浏览器中发现了可怕的PHPSESSID饼干我研究了一些深入的问题。 我发现是两方面的。首先,我在Mage_Core_Model_Session_Abstract_Varien类的函数start()中放置了一个Mage :: Log()调用,以记录Magento发起新会话的各种尝试,并注意到在第一次Mage :: run()调用preDispatch()之后Mage_Core_Controller_Front_Action类的,dispatch()和postDispatch()方法以通常的顺序被调用,但是似乎在postDispatch()执行时找不到由preDispatch()启动的会话,而是继续创建新会话。为此,我发现Magento 1.7.x和1.8.x版本之间的代码有所不同,我认为可以解决这个问题: Magento 1.7.x-Mage_Core_Model_Session_Abstract_Varien类: public function start($sessionName=null) { if (isset($_SESSION)) { return $this; } . . } Magento 1.8.x-Mage_Core_Model_Session_Abstract_Varien类: public function start($sessionName=null) { if (isset($_SESSION) && !$this->getSkipEmptySessionCheck()) { return $this; } . . } 我只是找不到在哪里设置SkipEmptySessionCheck属性,因此我最终以这种方式修补了Mage_Core_Controller_Front_Action类: public function postDispatch() { parent::postDispatch(); if (!$this->getFlag('', self::FLAG_NO_START_SESSION …