сессия — 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? Самый частая причина — это продлить время жизни авторизации пользователя, которая построена на сессиях. Как правило, по умолчанию, сессия хранится 15 минут. Соответственно, через 15 минут бездействия пользователя, он автоматически выходит из системы, и ему приходится авторизовываться заново.
Самый простой вариант продлить сессию — это изменить файл php. ini (переменная session.gc_maxlifetime), однако, едва ли у Вас имеется такая возможность (если, конечно, Вы не хозяин сервера). Поэтому самым лучшим вариантом будет добавить в файл
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.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
- Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Решено — Тайм-аут файла cookie/сеанса для клиентских веб-сайтов
TeamWalther-IT
Новый Плескиан
- #1
Привет,
Мне удалось успешно изменить Session-TimeOut в Plesk-Panel. Но я не могу изменить время ожидания сеанса для любого из моих клиентских веб-сайтов. Я попытался добавить следующие параметры в локальные настройки php клиентского сайта:
session.gc_probability = 1
session.gc_divisor = 1
session.gc_maxlifetime = 21600
session.cookie_lifetime = 21600
Веб-сайт работает под управлением PHP 7.2.14 (FPM). На сервере работает Debian.
phpinfo() показывает время жизни куки 21600, но различные системы управления контентом отключаются через 10 минут.
Есть предложения?
с уважением Торстен
TeamWalther-IT
Новый Плескиан
- #2
Хорошо, теперь мне удалось заставить его работать.
Я изменил значение по умолчанию 1440 (24 минуты) на 21600 (6 часов) для « session.gc_maxlifetime » в следующих файлах php.ini:
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini
В Debian/Ubuntu есть cronjob, удаляющий все сессии в стандарте путь сохранения сеанса, который старше максимального значения «session.gc_maxlifetime» во всех файлах php.ini… => /etc/cron.d/php5… к сожалению, этот скрипт рассматривает только стандартные файлы php.ini и игнорирует добавленные вручную дополнительные параметры в клиентских сайтах на PHP. Cronjob запускается каждые 30 минут и удаляет стандартные сеансы старше 24 минут. После изменения с 1440 на 21600 сеансы теперь будут удаляться через 6 часов.
Из соображений безопасности и для уменьшения вероятности перехвата сеанса было бы лучше оставить стандартное значение 1440 без изменений и изменить параметр «session. save_path» явно для одного клиентского веб-сайта. Если сеансы хранятся в каталоге, отличном от стандартного, они не будут удалены этим заданием cron. Затем вы можете добавить следующие директивы, например, в качестве дополнительных параметров php на этот веб-сайт:
session.gc_probability = 1
session.gc_divisor = 1
session.gc_maxlifetime = 21600
session.cookie_lifetime = 21600
Если вы выберете этот вариант, вам придется самостоятельно обрабатывать очистку отдельного session.save_path, например, с помощью такого скрипта:
find /path/to /sessions -cmin +24 -type f | xargs rm
с уважением Торстен
сессий клиентов | Adobe Commerce
- Руководство по работе с клиентами
- Введение в учетные записи клиентов Commerce
- Инструменты управления клиентами
- Все клиенты
- Сейчас онлайн
- сегментов
- Группы
- учетных записей клиентов
- Область действия учетной записи
- Настройка параметров учетной записи
- Целевая страница входа
- Параметры новой учетной записи
- Опции имени и адреса
- Варианты пароля
- Время жизни сеанса клиента
- Вход клиента
- Сброс паролей
- Создание индивидуальной учетной записи
- Управление учетными записями клиентов
- Управление учетной записью клиента
- Обновление профиля клиента
- Оказание помощи покупателям
- Атрибуты клиента
- Свойства атрибутов
- Атрибуты адреса
- Шаблоны адресов
- Кредит в магазине
- Рабочий процесс Store Credit
- Настройка кредита магазина
- Подача заявки на получение кредита в магазине
- Store Credit на панели управления учетной записью клиента
- Возврат средств на панели управления учетной записью клиента
- Панель управления учетными записями клиентов
- Управление панелью управления учетными записями клиентов
- Моя учетная запись
- Адресная книга
- Информация об учетной записи
- сегментов клиентов
- Создание и удаление сегментов клиентов
- Сегменты клиентов в ценовых правилах
- Отчет по потребительским сегментам
Время жизни покупательского сеанса покупок определяется несколькими факторами, включая продолжительность сеанса сервера, использование постоянной корзины и время жизни информации, хранящейся в браузере. Хотя они относятся к одному и тому же опыту работы с клиентами, это отдельные процессы с разными событиями истечения срока действия и временем жизни.
Столбец | Описание |
---|---|
Сессия | Информация, хранящаяся на сервере, например содержимое корзины. Если срок действия сеанса сервера истекает до истечения срока действия файла cookie, клиенты могут потерять содержимое корзины и снизить риск для безопасности. |
Файл cookie сеанса | Информация, которая хранится в браузере в виде числа или строки символов. Если срок действия файла cookie сеанса истекает до сеанса сервера, клиент выходит из системы. Файл cookie сеанса удаляется, когда клиент закрывает окно браузера. По умолчанию время жизни файла cookie установлено на 3600 секунд или один час. Если в течение этого времени клавиатура не используется, текущий сеанс завершается, и клиенты должны снова войти в свои учетные записи, чтобы продолжить покупки. |
Если включена постоянная корзина, содержимое корзины сохраняется для следующего входа клиентов в свои учетные записи. При использовании постоянной корзины рекомендуется установить длительный период времени жизни сеанса сервера и файла cookie сеанса.
На сервере продолжительность сеанса контролируется файлом php.ini
и несколькими переменными. В настоящее время в Adobe Commerce нет параметра конфигурации администратора, который управляет продолжительностью сеанса сервера.
Настройка времени жизни файлов cookie
На боковой панели Admin выберите Магазины > Настройки > Конфигурация .
Если у вас есть несколько магазинов, установите селектор Store View в правом верхнем углу на магазин, к которому применяется конфигурация.
На левой панели под General выберите Web .
Расширить Настройки файлов cookie по умолчанию .
Чтобы изменить значение по умолчанию, снимите флажок Использовать системное значение и введите новое значение в секундах.
По завершении нажмите Сохранить конфигурацию .
Настройка функции «Запомнить меня»
Чтобы упростить вход в систему, функция «Запомнить меня» позволяет владельцам учетных записей не вводить свои учетные данные каждый раз, когда они заходят на витрину магазина. По соображениям безопасности функция сохранения по умолчанию отключена.
На боковой панели Admin выберите Магазины > Настройки > Конфигурация .
На левой панели разверните Клиенты и выберите Постоянная корзина покупок .
Разверните раздел Общие параметры .