In einer Mutentore-Multiwebsite Magento möchte ich Benutzer dazu zwingen, sich auf derselben Website anzumelden, die sie registriert haben. Sie können jedes Anmeldeformular auf jeder Website verwenden, das Formular sollte jedoch ihre Anmeldeinformationen überprüfen und sie auf die richtige Website umleiten.
Ich habe versucht, die Website des Kunden zu überprüfen und ihn zum Anmelden zu zwingen. Es funktioniert aber nicht ganz gut. Der Benutzer wird auf der aktuellen Website angemeldet, nicht auf der von ihm registrierten.
In app / code / local / mage / Customer / 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;
}
Irgendwelche Ideen?
magento-1.9
multistore
login
session
Zekia
quelle
quelle
Antworten:
Zunächst müssen Sie einige Änderungen an der Einstellung vornehmen.
Teilen Sie Kundenkonten zwischen mehreren Websites
Sie sollten diese Funktion hier konfigurieren :
System -> Configuration -> Customer Configuration -> Share Customer Accounts
.Stellen Sie diese Einstellung auf Global ein, um jeden Kunden für alle Websites freizugeben .
Teilen Sie die Anmeldung zwischen Websites
Um die Sitzung beim Wechseln zwischen Stores auf verschiedenen Websites beizubehalten, aktivieren Sie "SID im Frontend verwenden" unter System> Konfiguration> Allgemein> Web :
Benutzer zwingen, auf dieselbe Website umzuleiten, die sie registriert haben
Kunden müssen sich zwangsweise auf derselben Website anmelden, auf der sie sich registriert haben, als wir versucht haben, uns von einer anderen Website aus anzumelden .
Benutzen
customer_login
Definieren Sie das Ereignis in config.xml
Beobachterklasse:
HINWEIS:
Ich habe diesen Code auf meinen MAGENTO DEMO STORE-Websites getestet.
Diese beiden Websites werden unter Verwendung des Website-Konzepts von derselben Magento-Instanz ausgeführt.
quelle
Sie können die folgende Methode für Ihre Anforderung umschreiben
unter Klasse umschreiben
Mage_Customer_Model_Session
setCustomerAsLoggedIn
Methodequelle
Verwenden Sie das
customer_login
Ereignis, um das Ändern / Umschreiben / Überschreiben von Kerndateien zu vermeiden.In Ihrer config.xml
Ihre Beobachterklasse (
/app/code/local/YourCompany/YourModule/Model/Observer.php
):Beachten Sie, dass Sie Kunden mit unterschiedlichen Geschäftsansichten unterschiedliche Kundengruppen zuweisen müssen.
Sie können Kundenattribute auch zuweisen und bei der Registrierung über ein ausgeblendetes Feld im Registrierungsformular festlegen, anstatt Kundengruppen zuzuweisen.
quelle