设想 :
- Magento 企业版 1.12.0.2
- 多个网站设置和工作
- 启用网站限制
- 使用自定义注册模块对注册进行了大量修改。
- 客户最终是按程序创建的,并根据围绕他们注册的国家/地区的一些逻辑分配到网站 (id)。这一切都很好。如果我从特定网站导航登录(帐户设置为全球),则客户将被重定向到正在登录的网站的主页。到目前为止没有问题。
此时,我想更改 magento 客户登录操作的功能。因此,使用 Native magento,客户会根据他们登录的网站被重定向到网站,例如:
- 客户到达/cn/landing 并登录中文网站。
- 客户到达 /uk/landing 并登录英国网站。
- 客户到达 /us/landing 并登录美国网站。
ETC
我想通过以下方式自定义 magento:
无论来自哪里(/uk 或 /cn 或 /us),我都想强制客户登录到特定网站(基于他们在注册时指定的国家/地区)。该网站对于这个问题基本上是任意的。
*我如何以编程方式将客户登录到特定网站,然后确保他们被重定向回该网站的主页?*
到目前为止,我已经正确地覆盖了Mage_Customer_AccountController并且一直在考虑更改 loginPostAction 和 _loginPostRedirect 方法。
到目前为止,我有
$this->_redirectUrl($session->getBeforeAuthUrl(true));
工作正常,但在重定向时,它会将我踢回登录页面,因为客户正在登录他们正在使用的网站,而不是依赖于客户国家代码的网站。
如果您查看 loginPostAction,您将看到:
try {
$session->login($login['username'], $login['password']);
我可以在这里指定要登录的网站吗?
如果我查看它调用的会话登录操作:
public function login($username, $password)
{
/** @var $customer Mage_Customer_Model_Customer */
$customer = Mage::getModel('customer/customer')
->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
/*I thought setting the website here would change where
*the customer is logged into, but as far i can tell, thats not the case.*/
if ($customer->authenticate($username, $password)) {
$this->setCustomerAsLoggedIn($customer);
$this->renewSession();
return true;
}
return false;
}
我遵循了 authenticate、setCustomerAsLoggedIn 和 renewSession 函数调用,到目前为止我的尝试都没有结果。我不能强迫客户登录到不同的网站(不同于他们来自哪里)。
在我开始吃键盘之前有什么建议吗?