Сьогоднішня стаття присвячена детальному розгляду важливого моменту в 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.
Дякуємо за увагу!
WordPress роками був неперевершеним "монолітом": він відповідав і за зручну адмін-панель, і за збереження даних,…
У світі веб-серверів часто говорять про протистояння Nginx vs Apache. Але що, якби я сказав…
Коли я починав свій шлях у веб-розробці, питання "який веб-сервер використовувати?" практично не стояло. Відповідь…
Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…
У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…
На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…