Magento и лучший способ синхронизировать сессии в магазинах - PullRequest
0 голосов
/ 13 февраля 2011

Я синхронизирую сессии между двумя разными доменами для Magento, используя технику передачи токенов с удаленным iframe или img.Я собираюсь внедрить его в Magento и искал несколько указателей.

Мне нужно будет сделать две вещи:

  1. Каждые 5 минут выводить iframe или img с помощью пульта дистанционного управления.Атрибут SRC для второго домена.
    • Q.Где лучшее место для реализации этого?В прошлом я выполнял отдельные действия, переопределяя метод renderLayout () в Magento.Должен ли я просто сделать это, добавив блок в конце загрузки страницы?Если я использую блок, он все еще сохраняет MVC?
  2. Мне нужно синхронизировать сеанс в другом домене при вызове скрипта.Мне нужно установить тот же файл cookie, который установил бы Magento, который ссылается на этот сеанс для пользователя.
    • Думая об этом, я думаю, что мне придется загрузить Mage :: app или любой другой вызов, который загружает среду Magento.
    • Q.Есть ли более легкий способ сделать это?

Просто для лучшего понимания того, что я делаю, вот краткое описание потока.

  1. Пользователь переходит на сайт A. Если время синхронизировать сеансы, выводится IMG или IFRAME с SRC, указывающим на site-b.com/sessionSyncer?token=SHA1TOKEN
  2. sessinSyncer, проверяет токен и, если это так,, создает сеанс и отправляет cookie в браузер для сеанса.Это должно происходить в манере Magento

Я знаю, что Magento имеет возможность передавать сессию через URL и генерирует ссылки для этого, но этого недостаточно, поскольку пользователь должен переключать сайты только с помощьюэти специальные URL, плюс URL становится уродливым.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Переопределение renderLayout излишне.Вместо этого создайте блок, который выводит ваш тег img и включите его в базовую тему, возможно, для области before_body_end, которая будет безопасно размещать его на всех страницах.

Изобретать собственный токен также излишне, так как Magentoиспользуя идентификатор сеанса PHP и автоматически размещает его для чужих доменов.Ваш пользовательский блок может сгенерировать URL с этим:

$this->getUrl('OTHER/STORE/PATH', array('_store' => 'YOUR_STORE_CODE'))

Если вы считаете, что вашему скрипту понадобится Mage::app(), то вы можете также использовать контроллер, который является аналогичным усилием,При обнаружении значения SID сеанс будет обновлен за кулисами, будут установлены файлы cookie и т. Д.

При использовании фрейма ему не нужно ничего выводить, и если небольшое изображение может быть статичным, как это:

print "GIF89a\1\0\1\0\x80\0\0\xff\xff\xff\xff\xff\xff!\xf9\4\1\n\0\1\0,\0\0\0\0\1\0\1\0\0\2\2L\1\0;";

PS
При создании URL внешнего хранилища без SID используйте параметр _nosid , чтобы принудительно очистить чистый URL.

0 голосов
/ 13 февраля 2011

Хранить сессии в БД и реплицировать таблицы базы данных или целые базы данных намного проще.Вы можете настроить это в вашем local.xml

<session_save><![CDATA[db]]></session_save>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...