Внешний логин Magento не будет создавать куки сессии - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь заменить довольно громоздкий ajax-логин Magento с внешнего сайта.Сайт использует Magento в качестве магазина.И у сайта, и у magento-shop есть свои собственные логины, поэтому, когда пользователь входит в систему, важно, чтобы оба синхронизировались.Это было сделано с помощью ajax-вызова при каждой перезагрузке страницы, сохраняя пользователя вошедшим в Magento.Я хочу удалить это, поэтому я создал проверку каждой перезагрузки страницы, которая будет делать все на стороне сервера.

Моя проблема в том, что следующий код не работает должным образом:

//Get Magento session-object
Mage::getSingleton("core/session", array("name"=>"frontend"));
$session = Mage::getSingleton("customer/session", array("name"=>"frontend"));

//Check if logged in
if(!$session->isLoggedIn()){                            
    //Not logged in, therefor log in 
    $mpassword = $this->getMagentoPassword();
    $musername = $this->getAddress();   
    try
    {
        $session->login($musername, $mpassword);    
    }catch(Exception $e){
        echo $e->getMessage();
    }                            
}

При просмотре файлов cookie ничего не создано, ajax-login фактически сделал "frontend" -cookie,Я знаю, что приведенный выше код фактически регистрирует пользователя, но сессионные куки не создаются.Какие-либо предложения?

1 Ответ

3 голосов
/ 09 февраля 2012

Magento инициализирует сеанс с вашим кодом, только если переменная $_SESSION не установлена, т. Е. session_start() не был вызван до создания основного сеанса.
Ссылка Mage_Core_Model_Session_Abstract_Varien::start() для подробной информации.

В качестве решения проще всего было бы запустить сеанс Magento во время запроса до запуска другого сеанса вашего сайта.
В противном случае вам придется продублировать код, который устанавливаетимя сеанса frontend и инициализирует cookie сеанса Magento.

...