сессия — Symfony 4: часто сбрасывается авторизация

Вопрос задан

Изменён 3 года 3 месяца назад

Просмотрен 299 раз

В файле framework.yaml для сессий установлены следующие настройки:

session:
    handler_id: session.handler.native_file
    save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
    name: 'prod112'
    cookie_secure: auto
    cookie_samesite: lax
    cookie_lifetime: 2592000

Не смотря на то, что время жизни равно 1 месяцу, где-то спустя полчаса-час выбрасывает из учетной записи, приходится повторно авторизовываться. При этом, кука с этим названием пишется нормально и срок ей указывается соответствующий:

prod112 u0cnla99lbgkaaeop2m870k9k4  192. 168.117.39  /   2019-12-18T20:12:35.888Z    33  ✓   ✓   Lax

При этом, есть аналогичные настройки на dev сервере:

session:
    handler_id: session.handler.native_file
    save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
    name: 'dev'
    cookie_secure: auto
    cookie_samesite: lax
    cookie_lifetime: 2592000

Такой проблемы там не наблюдается. Сессии точно пишутся, что в папку дева, что в прод, однако именно на проде в течение 30-60 минут сбрасывается авторизация и требует авторизоваться снова. Как можно решить эту проблему?

  • сессия
  • symfony
  • symfony4

3

session:
    gc_maxlifetime: 604800

Как и сказал уважаемый @noname2019 время сессии задается параметром gc-maxlifetime

В настройках вы можете попросту задать этот параметр для session раздела либо можете непосредственно в php. ini изменить параметр session.gc-maxlifetime ежели у вас сессии хранятся в файлах (а они у вас там и хранятся).

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Продление времени жизни сессии в PHP

Основы PHP 8

Пройдя курс, Вы узнаете:

— Как установить и настроить OpenServer

— Всю необходимую базу по PHP 8

— Как писать самые различные скрипты на PHP

Общая продолжительность курса 7 часов, плюс более 100 упражнений и поддержка!

Чтобы получить Видеокурс,
заполните форму

E-mail:
Имя:

Другие курсы

Как создать профессиональный Интернет-магазин

После семинара:

— Вы будете знать, как создать Интернет-магазин.

— Вы получите бесплатный подарок с подробным описанием каждого шага.

— Вы сможете уже приступить к созданию Интернет-магазина.

Записаться

Другие курсы

Тот, который передвигает горы, сначала убирает маленькие камешки.

Конфуций

Если Вы уже более-менее хорошо ориентируетесь в PHP, то знаете, какая разница между чистыми cookie и сессиями. И Вы должны знать, что время жизни сессии ограничено. Однако, это бывает не всегда удобно. И в этой статье я расскажу о том, как

продлить время жизни сессии в PHP.

Для чего требуется продливать время жизни сессии в PHP? Самый частая причина — это продлить время жизни авторизации пользователя, которая построена на сессиях. Как правило, по умолчанию, сессия хранится 15 минут. Соответственно, через 15 минут бездействия пользователя, он автоматически выходит из системы, и ему приходится авторизовываться заново.

Самый простой вариант продлить сессию — это изменить файл php. ini (переменная session.gc_maxlifetime), однако, едва ли у Вас имеется такая возможность (если, конечно, Вы не хозяин сервера). Поэтому самым лучшим вариантом будет добавить в файл

.htaccess такую строку:

php_value session.gc_maxlifetime 3600

Здесь мы изменили значение переменной session.gc_maxlifetime на 3600 секунд. Теперь у нас сессия будет храниться ровно 1 час. Если Вы поставите 0, то сессия будет храниться неограниченное время, что я крайне не рекомендую Вам делать, разве что только на локальном сервере. Так как это удобно при создании и отладке сайта.

Но не забывайте, что все файлы сессии хранятся на сервере. В результате, их может накопиться такое количество, что уже просто не хватит места (конечно, при условии большой посещаемости). Вдобавок, не забывайте:

чем меньше время жизни сессии — тем выше безопасность.

Ещё один момент. Некоторые хостинг-провайдеры запрещают управлять файлом .htaccess. Если так, то меняйте хостера, потому что любой уважающий себя хостинг-провайдер позволяет изменять .htaccess.

Теперь Вы знаете, как снять ограничение на время жизни сессии в PHP и надеюсь, что Ваш сайт станет таким образом гораздо удобнее и для Вас, и для Ваших пользователей.

  • Создано 11.04.2011 12:32:26
  • Михаил Русаков

Предыдущая статьяСледующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

Решено — Тайм-аут файла cookie/сеанса для клиентских веб-сайтов

TeamWalther-IT
Новый Плескиан

Столбец Описание
Сессия Информация, хранящаяся на сервере, например содержимое корзины. Если срок действия сеанса сервера истекает до истечения срока действия файла cookie, клиенты могут потерять содержимое корзины и снизить риск для безопасности.
Файл cookie сеанса Информация, которая хранится в браузере в виде числа или строки символов. Если срок действия файла cookie сеанса истекает до сеанса сервера, клиент выходит из системы. Файл cookie сеанса удаляется, когда клиент закрывает окно браузера. По умолчанию время жизни файла cookie установлено на 3600 секунд или один час. Если в течение этого времени клавиатура не используется, текущий сеанс завершается, и клиенты должны снова войти в свои учетные записи, чтобы продолжить покупки.