Сьогоднішня стаття присвячена детальному розгляду важливого моменту в Magento 2 – сесіям, і тому, як зберігається інформація про сеанс. Ми розглянемо загальні питання сесій, дані, які зберігаються в сеансі, налаштування для сесій в адмінці, а також найбільш цікаві моменти, які виникають при роботі з сесіями в Magento 2.
Сесія (або сеанс) в Magento 2 дозволяє зберігати важливу інформацію, яку можна використовувати для ідентифікації користувача. Також сесії дозволяють передавати потрібні (і важливі) дані з однієї сторінки на іншу.
Magento зберігає сесії в різних локаціях:
Коли ви використовуєте файлову систему для зберігання сеансу, 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).
Тут представлені налаштування для наступних функцій:
Сесія зберігає в собі всю необхідну і постійно використовувану інформацію про користувача, зокрема:
Ми можемо вказати для нових даних, щоб вони зберігалися в сеансі. Для цього вам потрібно викликати одну з моделей:
\Magento\Customer\Model\Session $customerSession \Magento\Catalog\Model\Session $catalogSession \Magento\Checkout\Model\Session $checkoutSession
і реалізувати методи get
(отримання), set
(встановлення), uns
(видалення значень з сеансу).
Ви можете використовувати різні моделі для керування сесіями в різних ситуаціях. Якщо вам потрібно працювати з даними користувача, тоді найкраще використовувати модель \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.
Дякуємо за увагу!
Якщо хочеш пізнати людину, не слухай, що про неї говорять інші, послухай, що вона говорить…
Вибачення — не означає, що ти не правий, а інша людина має рацію. Це всього…
Атмосферу паперової книги, запах свіжого чорнила і паперу, що трохи залежався, складно замінити гаджетами. Але…