Сессия приложения Laravel истекает на AWS ELB - PullRequest
0 голосов
/ 16 января 2019

У меня есть приложение Laravel, развернутое на AWS Elastic Beanstalk с классическим балансировщиком нагрузки.Так или иначе пользовательские сессии истекают в нерегулярные времена.Иногда срок действия истекает сразу после входа в систему, и чаще всего через несколько минут после входа в систему. В некоторых случаях срок действия истекает через несколько часов.но на локальном хосте этого не происходит.

Я настроил продолжительность сеанса в приложении Laravel на 10 часов, и это прекрасно работает на локальном хосте, но почему-то не работает на AWS ELB.

Я подозреваю, что AWS сбрасывает сессии приложения несколько раз в течение дня.Если это так, как мне преодолеть это?Если это не так, то что может быть причиной этого?

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Я выкладываю ответ здесь, чтобы кто-нибудь столкнулся с той же проблемой. Что происходит с серверами AWS, так это то, что они перераспределяют ваши коды пару раз в день, и это очищает все вновь созданные файлы и загруженные файлы в вашем проекте. Вот почему вы должны использовать облачное хранилище, если вы хотите хранить файлы, и то же самое происходит с сеансами. По умолчанию laravel сохраняет сеансы в файле, и всякий раз, когда AWS повторно развертывает ваш код, он стирает весь текущий сеанс, поскольку удаляет файл сеанса. Решение - хранить сессии где угодно, кроме файла. Поэтому я использовал свою базу данных для хранения сессий и кеша. Вы можете сделать это с помощью

Перейдите в config / session.php и измените драйвер на база данных

После запуска

php ремесленный сеанс: таблица

php artisan migrate

Это создаст таблицу сессий в базе данных для вас, и это должно решить проблему с AWS. Точно так же, как @ arun-a сказал вкратце. Вы можете ознакомиться с документами сессий для получения дополнительной информации.

0 голосов
/ 22 марта 2019

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

...