1

设想 :

  1. Magento 企业版 1.12.0.2
  2. 多个网站设置和工作
  3. 启用网站限制
  4. 使用自定义注册模块对注册进行了大量修改。
  5. 客户最终是按程序创建的,并根据围绕他们注册的国家/地区的一些逻辑分配到网站 (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 函数调用,到目前为止我的尝试都没有结果。我不能强迫客户登录到不同的网站(不同于他们来自哪里)。

在我开始吃键盘之前有什么建议吗?

4

0 回答 0