Magento Cookies меняют Prevent Frontend Войти - PullRequest
1 голос
/ 21 января 2012

Когда клиент пытается войти в интерфейс Magento, он без ошибок перенаправляется обратно на страницу входа.Проблема заключается в том, что новый файл cookie записывается, а затем сразу перезаписывается при входе в систему. Вот журнал файлов cookie, установленных при входе в систему:

Cookie frontend added.  0o94icitv247nhh6l7op2csoe4  .domain.com 
Cookie frontend deleted.  0o94icitv247nhh6l7op2csoe4    .domain.com
Cookie frontend added.  no81giicmgscpkr14ho3m1rpv2  .domain.com
Cookie frontend changed.  0o94icitv247nhh6l7op2csoe4    .domain.com
Cookie frontend changed.  0o94icitv247nhh6l7op2csoe4    .domain.com

Если я вручную изменяю файл cookie внешнего интерфейса на значениев третьей строке, затем я вошел в систему. Есть идеи, почему это меняется (дважды даже) в строках 4 и 5?

Я думал, что это может быть расширение, перезаписывающее класс Mage_Core_Model_Session_Abstract_Varien, ноgrep каталога app / code не показывает классы, расширяющие этот класс.

- UPDATE -

У меня все еще есть эта проблема.Я выкопал немного больше (с помощью XDEBUG / webgrind) и обнаружил, что Mage_Core_Model_Session_Abstract_Varien->start вызывается дважды с помощью:

Mage_Core_Model_Session_Abstract_Varien->init @ 162
Mage_Core_Controller_Varien_Action->preDispatch @ 490

Похоже, preDispatch() может перезаписывать файл cookie сеанса.Имеет ли это смысл?У меня нет большого опыта работы с сеансами Magento, поэтому я надеюсь, что здесь кто-нибудь сможет помочь.

Ответы [ 2 ]

3 голосов
/ 15 июня 2016

На мой взгляд, в ядре Magento есть ошибка:

В Mage_Core_Model_Session_Abstract_Varien есть код:

if (isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}

Что на самом деле не имеет смысла. Должно быть:

if (!isset($cookieParams['domain'])) {
    $cookieParams['domain'] = $cookie->getDomain();
}

Это позволяет избежать двойного печенья "frontend".

2 голосов
/ 07 февраля 2012

Я наконец нашел источник двойного печенья.

Кэш страницы TinyBrick Lightspeed добавлял cookie на уровне поддоменов, который сбивал их с толку в TLD:

        public static function buildCookie()
        {
                require_once 'app/Mage.php';
                $request = new Zend_Controller_Request_Http();
                session_set_cookie_params(
                         self::getCookieLifetime()
                        ,self::getDefaultCookiePath()
//                      ,$request->getHttpHost() // commented out to fix double cookie problem.
                        ,'.domain.com' // added to fix double cookie problem.
                        ,false
                        ,true
                );
                session_name('frontend');
                session_start();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...