【问题标题】:Laravel Application session expires on AWS ELBLaravel 应用程序会话在 AWS ELB 上过期
【发布时间】:2019-06-10 08:48:27
【问题描述】:

我在 AWS Elastic Beanstalk 上部署了一个 Laravel 应用程序,带有一个经典的负载均衡器。不知何故,用户会话在不规则的时间过期。有时它会在登录后立即过期,大多数时候在登录后几分钟。在某些情况下,它需要几个小时才能过期。但是在本地主机上,这不会发生。

我已将我的 Laravel 应用程序中的会话持续时间配置为 10 小时,这在 localhost 上运行良好,但不知何故它在 AWS ELB 上不起作用。

我怀疑 AWS 在一天内多次重置应用会话。如果是这种情况,我该如何克服呢?如果不是这样,那可能是什么原因造成的?

【问题讨论】:

    标签: laravel amazon-web-services session amazon-ec2 amazon-elb


    【解决方案1】:

    我在这里发布答案,这样任何人都会遇到同样的问题。 AWS 服务器发生的情况是,他们每天会重新部署您的代码几次,这会清除您项目中所有新创建的文件和上传的文件。这就是为什么如果你想存储文件就必须使用云存储,而会话也会发生同样的事情。 默认情况下,laravel 将会话保存在一个文件中,并且每当 AWS 重新部署您的代码时,它会擦除​​所有当前会话,因为它会删除会话文件。解决方案是将会话存储在文件以外的任何地方。所以我用我的数据库来存储会话和缓存。你可以这样做

    转到 config/session.php 并将驱动程序更改为 database

    运行后

    php artisan session:table

    php 工匠迁移

    这些将为您在数据库中创建会话表,这应该可以解决 AWS 问题。就像@arun-a 简而言之。您可以查看sessions docs 了解更多信息。

    【讨论】:

      【解决方案2】:

      如果您使用负载平衡器,则必须保持会话集中,以便通过多个服务器进行访问。所以使用会话驱动作为数据库而不是文件并进行相关迁移。请参阅here

      【讨论】:

        猜你喜欢
        • 2015-09-14
        • 2016-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-20
        • 2017-11-08
        • 2013-08-26
        相关资源
        最近更新 更多