В моем приложении Symfony 3.4 пользователь автоматически выходит из системы через определенный период времени. Я хочу изменить это поведение и сделать так, чтобы мое приложение никогда не выходило из системы автоматически. Он должен выходить из сеанса только тогда, когда пользователь щелкает ссылку выхода.
Я прочитал документацию и попытался установить cookie_lifetime, но у меня это не работает. Если кто-то работал в этой области, пожалуйста, подскажите, как действовать дальше.
Обновления:
Я использую эту страницу документации http://symfony.com/doc/master/components/http_foundation/session_configuration.html#session-lifetime
Я использую проект на основе Symfony 3.4 flex.
Я настраиваю конфигурации в config / packages / framework.yml. Конфигурации следующие:
framework:
session:
handler_id: ~
cookie_lifetime: 31536000
gc_maxlifetime: 31536000
Я добавил больше информации
Вы пробовали ссылку, которую я предоставил? Похоже, вам также нужно настроить sth. в firewall.
@Musterknabe Нет, помни, я не нужен в этом случае. Я ответил на свой вопрос ниже.
Ах, извините, тогда я вас неправильно понял. Вам не нужна была функция remember_me, вы просто хотели, чтобы пользователь вообще не выходил из системы, верно?




После долгой отладки я обнаружил, что следующая конфигурация указывает Symfony использовать обработчик сохранения PHP по умолчанию и путь к файлу сеанса по умолчанию.
framework:
session:
handler_id: ~
Следовательно, файлы сессий Symfony хранятся в каталоге /var/lib/php/sessions. В операционных системах на основе Debian задание cron удаляет файлы сеанса каждые полчаса. Это задание cron определяет активные сеансы на основе PIDs, связанного с apache2, и обновляет время последнего доступа и время последнего изменения только этих файлов активных сеансов.
Затем то же задание cron удаляет файлы сеанса, которые имеют время последней модификации перед gc_maxlifetime, т.е. неактивные сеансы. Основная проблема заключается в том, что gc_maxlifetime определяется только на основе файлов php.ini, но без учета файлов .yaml от Symfony. Следовательно, конфигурации в файлах Symfony .yaml игнорируются и используется gc_maxlifetime PHP.
Это приводит к тому, что файлы сеанса удаляются через 20-30 минут. Чтобы решить эту проблему, я обновил конфигурации .yaml следующим образом:
framework:
session:
handler_id: session.handler.native_file
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
cookie_lifetime: 31536000
gc_maxlifetime: 31536000
Теперь файлы сеанса не хранятся в каталоге /var/lib/php/sessions по умолчанию, и, следовательно, задание cron не удаляет файлы сеанса. Теперь Symfony берет на себя эту работу по обработке сессий, и теперь она работает отлично.
Это решение для Symfony 4.
session:
#handler_id: ~
handler_id: session.handler.native_file
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
cookie_lifetime: 1800 // was "lifetime" but deprecated
Можете ли вы привести пример кода того, что вы пробовали до сих пор? Особенно как вы установили
cookie_lifetime? Вы использовали эту страницу документации? symfony.com/doc/current/security/remember_me.html