В мультисайтовом мультисайтовом Magento я хотел бы заставить пользователей входить на тот же веб-сайт, который они зарегистрировали. Они могут использовать любую форму входа на любом веб-сайте, но форма должна проверить свои учетные данные и перенаправить их на правильный веб-сайт.
Я попытался проверить веб-сайт клиента и заставить его войти в систему. Это не работает довольно хорошо, хотя. Пользователь авторизуется на текущем веб-сайте, а не на том, который он зарегистрировал.
В приложении / код / локальный / маг / клиент / Session.php
public function login($username, $password)
{
/**************************************************/
$customer = Mage::getModel("customer/customer");
$customer_website = null;
foreach (Mage::app()->getWebsites() as $website) {
$customer->setWebsiteId($website->getId());
$customer->loadByEmail($username);
//check if user exists
if($customer->getName()){
$customer_website = $website->getId();
}
}
/*************************************************/
$customer = Mage::getModel('customer/customer')->setWebsiteId($customer_website);
if ($customer->authenticate($username, $password)) {
$this->setCustomerAsLoggedIn($customer);
return true;
}
return false;
}
Любые идеи?
Ответы:
Во-первых, вам нужно сделать некоторые изменения в настройках.
Обмен учетными записями клиентов между несколькими веб-сайтами
Вы должны настроить эту функцию здесь:
System -> Configuration -> Customer Configuration -> Share Customer Accounts
.Задайте для этого параметра значение Global, чтобы каждый клиент мог делиться со всеми сайтами .
Поделиться логином между сайтами
Чтобы сохранить сеанс при переключении между магазинами на другом веб-сайте , включите «Использовать SID на внешнем интерфейсе» в « Система> Конфигурация> Общие> Веб» :
Заставить пользователей перенаправлять на тот же сайт, который они зарегистрировали
Принудительно войдите в систему клиента на тот же веб-сайт, который они зарегистрировали, когда мы попытались войти с другого веб-сайта.
использование
customer_login
Определите событие для config.xml
Класс наблюдателя:
НОТА:
Я проверил этот код на своих веб-сайтах MAGENTO DEMO Store.
Эти два веб-сайта работают из одного экземпляра magento с использованием концепции веб-сайта.
источник
Вы можете переписать ниже метод для вашего требования
переписать ниже класса
Mage_Customer_Model_Session
setCustomerAsLoggedIn
методисточник
Используйте
customer_login
событие, чтобы избежать изменения / перезаписи / переопределения основных файлов.В вашем config.xml
Ваш класс наблюдателя (
/app/code/local/YourCompany/YourModule/Model/Observer.php
):Обратите внимание, что вам нужно будет назначать разные группы клиентов покупателям разных представлений магазина.
Вы также можете назначить атрибуты клиента и установить их при регистрации через скрытое поле в форме регистрации вместо назначения групп клиентов.
источник