Підступна війна росії проти України. Орієнтовні втрати ворога
(станом на 02.12.2022)
90090
осіб
280
літаків
262
гелікоптерів
2916
танків
5883
ББМ
1905
артилерія
210
ППО
395
РСЗВ
4464
машин
16
кораблі і катери
Детальний огляд системи сесій (сеансів) в 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.

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

 

 

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

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