Categories: Мадженто 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.

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

Recent Posts

Опалення і гаряча вода коли треба, а не коли включать

Тепло в домі і гаряча вода в будь-який час для багатьох мешканців багатоквартирних та приватних… Read More

19/09/2020

Що краще: цифрове телебачення Т2 чи інтернет-телебачення

Сучасне життя неможливо уявити без телебачення. Воно дозволяє дізнаватися про події в Україні та світі,… Read More

02/09/2020

Гіпоалергенна подушка. Чому вона важлива?

Зараз знайдеться мало людей, в яких немає алергії на продукти або пилок рослин. Вважається, що… Read More

28/08/2020

Футбольний Інстаграм – що нового у топових футболістів

Деякі відомі футболісти ретельно приховують свої особисте життя, а інші – активно постять фотографії з… Read More

24/08/2020

Види та типи компресійних панчіх

Вироби називають компресійними, коли їх застосовують для лікування, а також профілактики порушень кровотоку в нижніх… Read More

22/08/2020

Як правильно замінити оливу у двотактному гідроциклі?

Гідроцикли – це класний плавзасіб, який може подарувати вам незліченні години приємного проведення часу на… Read More

19/08/2020