为什么Magento每个会话使用2个cookie?

出于数据安全和隐私的原因,我想知道为什么Magento为一个前端会话使用两个cookie。

我所知道的是,其中一个正在Mage_Core_Model_Cookie::set(..) ,另一个在Zend_Session::expireSessionCookie() ,但我似乎无法弄清楚它们用于什么。

我无法想象为什么人们需要为同一个域使用第二个cookie。


我打算称这一个退化代码。 Varien在很大程度上依赖于Zend框架作为Magento的基础,所以很多类(例如Zend_Session)都被用作Magento实现的父类。

标有“前端”的Varien-set cookie是为您访问的网站部分命名的(例如,如果您通过后端登录,您将拥有一个单独的“admin”cookie),而Zend cookie似乎是全球性的。

另外请注意,我能够删除Zend cookie而没有任何明显的有害影响(我的登录会话和购物车保持可访问,并且cookie不会立即被替换)。


我能够通过颠倒session_start()调用的顺序以及在Mage_Core_Model_Session_Abstract_Varien::start(..)中设置cookie的语句来解决此问题。 这两条线现在看起来像这样:

$cookie->set(session_name(), $this->getSessionId());
session_start();

它现在只创建一个单一的cookie,并且似乎没有任何副作用。

顺便说一句:另一个cookie不是像我所想的那样在Zend_Session中创建的,而是它们都来自Mage_Core_Model_Session_Abstract_Varien::start(..)


这太有趣了。 我刚刚检查了企业版的安装,并且只设置了“PHPSESSIONID”,即使登录到这两者,“前端”和“管理员”也丢失。 也许这是一些仍在积极开发中的东西。

链接地址: http://www.djcxy.com/p/62419.html

上一篇: Why does Magento use 2 cookies per session?

下一篇: Common Hypernym between two words using WordNet (JWI)