Magento设置客户会话网关或连接超时错误

时间:2017-01-11 07:49:45

标签: php magento session session-cookies magento-1.9

我们正试图在Magento中务实地设置客户会话。我们通过 setCustomerAsLoggedIn 方法设置会话。但对于某些客户,它会继续加载/处理请求,最后会显示“网关超时连接超时”错误。它的随机问题并非适用于所有客户。

我们的Magento设置有3个网站B2B,B2E,B2C,我们只针对B2B和B2E网站面临此问题。请查看以下功能并提供可能的解决方案。

$customer=Mage::getModel('customer/customer')->load($id);
$session = Mage::getSingleton('customer/session');
$session->setCustomerAsLoggedIn($customer);
$this->_redirect();

1 个答案:

答案 0 :(得分:0)

不应直接将客户对象传递给会话,而应传递如下:

$session = Mage::getSingleton('customer/session', array('name' => 'frontend'));
$session->login($email, $password);
$session->setCustomerAsLoggedIn($session->getCustomer());

因此,在登录完成后从会话传递客户对象。

请尝试告诉我们这是否适合您。

如果您只想通过电子邮件登录用户,也可以尝试使用以下方法

$customer = Mage::getModel('customer/customer')->load($customerId);
if ($customer->getWebsiteId()) {
    Mage::init($customer->getWebsiteId(), 'website');
    $session = Mage::getSingleton('customer/session');
    $session->loginById($customerId);
    return $session;
}

您需要首先使用电子邮件获取客户ID以便上述工作,并且网站也是关键

工作代码:

以下是我在演示网站上查看自己的工作代码:

include("app/Mage.php");
Mage::app();
$customer = Mage::getModel("customer/customer"); 
$customer->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
$customer->loadByEmail('testemail@123.org');
$customerId = $customer->getId();
Mage::init($customer->getWebsiteId(), 'website');
$session = Mage::getSingleton('customer/session');
$session->loginById($customerId);
return $session;
exit;
相关问题