Детальный обзор системы сессий (сеансов) в Magento 2

Детальный обзор системы сессий (сеансов) в Magento 2



Сегодняшняя статья посвящена подробному рассмотрению важного момента в Magento 2 – сессиям, и тому, как хранится информация о сеансе. Мы рассмотрим общие вопросы сессий, данные, которые хранятся в сеансе, настройки для сессий в админке, а также наиболее интересные моменты, которые возникают при работе с сессиями в Magento 2.

 

 

Сессии в Magento 2 – общая информация

Сессия (или сеанс) в Magento 2 позволяет хранить важную информацию, которую можно использовать для идентификации пользователя. Также сессии позволяют передавать нужные (и важные) данные с одной страницы на другую.

Magento хранит сессии в различных локациях:

  • В памяти (RAM), если вы используете memcached
  • На сервере Redis, если он настроен
  • В файле

 

 

Когда вы используете файловую систему для хранения сеанса, Magento сохраняет сессию в файлах по указанному пути. Путь может быть указан в файле app/etc/env.php:

'session' => array (
  'save' => 'files',
  'save_path' => '/var/session',
)

 

Если в этом файле путь не указан, тогда система будет искать настройки пути в файле php.ini, в значении session.save_path.

Если путь не указан ни в одном из вышеуказанных файлов, сеанс будет сохранен по следующему адресу /var/session (из корневой папки установки Мадженто).

 

Для управления сессиями Magento использует класс \Magento\Framework\Session\SessionManager. Magento также сохраняет идентификатор текущей сессии в файлах cookie, что помогает системе идентифицировать вас как пользователя, вошедшего в систему, даже после закрытия и открытия браузера.

При старте сеанса автоматически создаются файлы cookie с именем PHPSESSID и значением, которое равно идентификатору сеанса. Для безопасности система вызывает функцию session_regenerate_id(), когда вы входите в систему.



Новые данные автоматически заносятся в файлы cookie, а если у файлов cookie истек срок действия или максимальный возраст, тогда они обновляются.

 

Настройки файлов cookie и сеансов указываются в Панели администратора по адресу Магазины -> Конфигурация -> Интернет -> Настройки файлов cookie по умолчанию/Настройки проверки сеанса (Stores -> Configuration -> Web -> Default Cookie Settings / Session Validation Settings).

Здесь представлены настройки для следующих функций:

  • Срок действия куки (Cookie Lifetime) – количество секунд, в течение которых информация о вашем присутствии на сайте будет сохраняться (даже при обновлении или смене страницы). По умолчанию время жизни для куки установлено на 3600 (т.е., 1 час).
  • Путь куки (Cookie Path) – путь, который указывает на место хранения файлов cookie.
  • Домен (Domain) – если не указать, тогда по умолчанию используется домен магазина.
  • Использовать только HTTP (Use HTTP Only) – позволяет использовать только протокол HTTP, оставьте значение «Да», чтобы обезопасить себя.
  • Режим уведомления о файлах cookie (Cookie Restriction Mode) – включает предварительное уведомление об использовании файлов cookie на фронтэнде магазина, требует от клиента согласия с Политикой конфиденциальности.
  • Настройки проверки сеанса (Session Validation Settings) – в этом разделе настроек устанавливаются права доступа, а также указываются переменные, которые система должна проверять на сервере.
  • Использовать SID на фронтэнде (Use SID on Storefront) – эта опция позволяет системе распознавать нас при переходе из одного магазина в системе к другому.

 

 

Какие данные записываются в сессию (сеанс) Magento 2

Сессия хранит в себе всю необходимую и постоянно используемую информацию о пользователе, в частности:

  • Общая информация о пользователе, его браузере и IP-адресе
  • Информация о посетителе, дата посещения, идентификатор сеанса, идентификатор посетителя, информация о том, вошел ли пользователь в систему или нет, идентификатор зарегистрированного пользователя
  • Информация о зарегистрированном пользователе, его список пожеланий, данные его корзины, а также группа пользователей, к которой он относится
  • Сообщения для пользователя, отчеты и другая информация

 

 

Мы можем указать для новых данных, чтобы они сохранялись в сеансе. Для этого вам нужно вызвать одну из моделей:

\Magento\Customer\Model\Session $customerSession
\Magento\Catalog\Model\Session $catalogSession
\Magento\Checkout\Model\Session $checkoutSession

 

и реализовать методы get (получение), set (установка), uns (удаление значений из сеанса).

 

 

Важные моменты при работе с сессиями в Мадженто 2

Вы можете использовать различные модели для управления сессиями в различных ситуациях. Если вам нужно работать с пользовательскими данными, тогда лучше всего использовать модель \Magento\Customer\Model\Session.

Если вам нужно указать время жизни сессии на стороне сервера, вам нужно в файле php.ini установить желаемое значение в секундах для переменной session.gc_maxlifetime. После этого не забудьте перезапустить сервер, чтобы изменения вступили в силу.

Для сохранения сеансов в Redis, укажите системе следующие настройки в файле app/etc/env.php:

'session' => array ('save' => 'redis')

 

Чтобы узнать текущий идентификатор клиента, вошедшего в систему, вам необходимо объявить модель \Magento\Customer\Model\Session в __construct блоке или контроллере (в зависимости от ситуации). Затем запросить идентификатор пользователя, например так:

$this->session->getCustomerId();

 

 

 

Заключительные мысли

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

Спасибо за внимание!

 



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *