Детальний огляд системи сесій (сеансів) в 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.

Дякуємо за увагу!

 



Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься. Обов’язкові поля позначені *