Детальный обзор системы сессий (сеансов) в 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.
Спасибо за внимание!
Последние посты
Как выбрать идеальный ноутбук: Полный гайд
Выбор ноутбука может быть сложной задачей в мире, где рынок переполнен вариантами на любой вкус… Читать далее
Томас Эдисон
Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее
Самые красивые и впечатляющие мосты со всего мира (ТОП-10)
Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее
Соломон
Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее
Чак Паланик
Кто может — тот делает. Кто не может — тот критикует Чак Паланик Читать далее
Ричард Бах
Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее