Вход в Magento Ajax - через SSL - PullRequest
0 голосов
/ 28 июня 2011

Я работаю над входом в ajax для magento и столкнулся с небольшой проблемой при работе с ssl.

Страница запроса, которую я использую для отображения моего входа в систему, является небезопасной страницей. На этой странице я использую ajax для публикации на защищенный URL-адрес (https://client.devserver/customer/account/ajaxLoginPost/). Ответ json, который я получаю, верен, однако, когда я обновляю страницу, пользователь не вошел в систему.

Я протестировал эту функцию на незащищенном сайте, и она работает как задумано. Кажется, он ломается только при добавлении следующего уровня SSL.

Любая помощь с этим очень ценится.

Вот код моего контроллера.

public function ajaxLoginPostAction()
{
    if ($this->_getSession()->isLoggedIn()) {
        $this->_redirect('*/*/');
        return;
    }
    $session = $this->_getSession();

    if ($this->getRequest()->isPost()) {
        $login = $this->getRequest()->getPost('login');
        if (!empty($login['username']) && !empty($login['password'])) {
            try {
                $session->login($login['username'], $login['password']);
                if ($session->getCustomer()->getIsJustConfirmed()) {
                    $this->_welcomeCustomer($session->getCustomer(), true);
                }
                $messages = array("isAuthed" => true);
            } catch (Mage_Core_Exception $e) {
                switch ($e->getCode()) {
                    case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
                        $message = $e->getMessage();
                        break;
                    default:
                        $message = $e->getMessage();
                }
                $messages = array("isAuthed" => false, "userName" => $login['username'],"error"=> $message);
            } catch (Exception $e) {
                // Mage::logException($e); // PA DSS violation: this exception log can disclose customer password
            }

        } else {
            $messages = array("isAuthed" => false, "userName" => $login['username'],"error"=>'Login and password are required.');
        }
    }
    //$this->_loginPostRedirect();
    $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($messages));
}

1 Ответ

3 голосов
/ 28 июня 2011

Фактически существует два файла cookie (и, следовательно, два сеанса), один для подключения «http» и один для «https».

Вы можете либо перейти на защищенную страницу после входа в систему, что исключает необходимость в форме AJAX, либо вернуть SID в ответе JSON и найти способ установить незащищенный файл cookie. с этим значением.

Третий вариант - оставить весь сайт защищенным, это требует дополнительной работы и затрат для сервера, поэтому не все компании готовы принять такую ​​разумную меру предосторожности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...