Сьогоднішня стаття присвячена детальному розгляду важливого моменту в 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.
Дякуємо за увагу!
Іспанська мова приваблює мільйони людей своєю мелодійністю, емоційністю та відносною простотою вивчення. Одним із найважливіших…
Коли проєкт залежить від чужих обмежень, зростають ризики простоїв, втрати доступу до даних і складнощів…
У тих, хто планує створення сайту вперше, майже завжди виникає питання: що таке домен і…
Для простого користувача критерієм хорошого Wi-Fi є швидке завантаження сторінок та відсутність буферизації під час…
Коли власник стоматологічної клініки вперше замислюється про автоматизацію, він нерідко іде найпростішим шляхом: гуглить "CRM…
Алоха! Останні кілька років остаточно закріпили тренд на віддалену роботу. Для веб-розробників, DevOps-інженерів та адміністраторів…