Magento外部登录不会创建会话cookie

时间:2012-02-09 06:30:41

标签: session magento login session-cookies frontend

我正在尝试从外部网站替换Magento的一个相当块状的ajax登录。该网站使用Magento作为商店。站点和magento-shop都有自己的登录,因此当用户登录时,两者都是同步的很重要。这是通过每次重新加载ajax-call来完成的,让用户登录Magento。我想删除它,所以我创建了一个检查每个页面重新加载,它将执行服务器端的所有操作。

我的问题是,以下代码无法正常运行:

//Get Magento session-object
Mage::getSingleton("core/session", array("name"=>"frontend"));
$session = Mage::getSingleton("customer/session", array("name"=>"frontend"));

//Check if logged in
if(!$session->isLoggedIn()){                            
    //Not logged in, therefor log in 
    $mpassword = $this->getMagentoPassword();
    $musername = $this->getAddress();   
    try
    {
        $session->login($musername, $mpassword);    
    }catch(Exception $e){
        echo $e->getMessage();
    }                            
}

看着cookies,没有任何创建,ajax-login实际上是一个“前端”-cookie。我知道上面的代码实际上登录了用户,但没有创建任何会话cookie。有什么建议?

1 个答案:

答案 0 :(得分:3)

如果未设置$_SESSION变量,Magento仅使用您的代码初始化会话,即在核心会话实例化之前未调用session_start()。 有关详细信息,请参阅Mage_Core_Model_Session_Abstract_Varien::start()

作为一种解决方案,最简单的方法是在之前启动Magento会话启动网站的其他会话。
否则,您必须复制将会话名称设置为frontend的代码并初始化Magento会话cookie。