我正在尝试从外部网站替换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。有什么建议?
答案 0 :(得分:3)
如果未设置$_SESSION
变量,Magento仅使用您的代码初始化会话,即在核心会话实例化之前未调用session_start()
。
有关详细信息,请参阅Mage_Core_Model_Session_Abstract_Varien::start()
。
作为一种解决方案,最简单的方法是在之前启动Magento会话启动网站的其他会话。
否则,您必须复制将会话名称设置为frontend
的代码并初始化Magento会话cookie。