Конфігурація TTL сесії
Дата оновлення перекладу 2022-11-25
Конфігурація TTL сесії
Symfony за замовчуванням використовуватиме налаштування PHP ini session.gc_maxlifetime
в якості життєвого циклу сесії. Однак, якщо ви зберігаєте сесії у базі даних,
ви також можете сконфігурувати власний TTL у конфігурації фреймворку або навіть у рантаймі.
Зміна налаштування ini неможлива після початку сесії, тому якщо ви хочете використати інший TTL залежно від того, який користувач виконав вхід у систему, вам дійсно потрібно зробити це під час рантайму, використовуючи метод зворотного виклику нижче.
Конфігурація TTL
Вам потрібно передати TTL у масиві опцій обробника сесії, який ви використовуєте:
1 2 3 4 5 6 7
# config/services.yaml
services:
# ...
Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
arguments:
- '@Redis'
- { 'ttl': 600 }
Динамічна конфігурація TTL у рантаймі
Якщо ви хочете мати різні TTL для різних користувачів або сесій за будь-яких причин, це також можливо, шляхом передачі зворотного виклику в якості значення TTL. Потім, зворотний виклик має повернути ціле число, яке буде використано як TTL.
Зворотний виклик буде викликаний прямо перед написанням сесії.
1 2 3 4 5 6 7 8 9 10 11 12 13
# config/services.yaml
services:
# ...
Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
arguments:
- '@Redis'
- { 'ttl': !closure '@my.ttl.handler' }
my.ttl.handler:
class: Some\InvokableClass # деякий клас з методом __invoke()
arguments:
# Впровадити ті залежності, які вам потрібні, щоб розвʼязати TTL для поточної сесії
- '@security'