我有一个使用经典负载平衡器部署在AWS Elastic Beanstalk上的Laravel应用程序。用户会话以某种方式在不规则的时间到期。有时它会在登录后立即失效,大多数情况下是在登录后几分钟失效。在某些情况下,它需要几个小时才能失效。但是在本地主机上,这不会发生。
我已将我的Laravel应用程序中的会话持续时间配置为10小时,这在localhost上可以很好地运行,但是以某种方式在AWS ELB上不起作用。
我怀疑AWS在一天内会多次重置应用会话。如果是这样,我该如何克服呢?如果不是这种情况,那么可能是什么原因造成的?
答案 0 :(得分:1)
如果使用的是负载平衡器,则必须将会话保持集中状态才能访问多个服务器。因此,请使用会话驱动程序作为数据库而不是文件,并进行相关的迁移。请参阅here。
答案 1 :(得分:1)
我在这里发布答案只是为了让任何人都遇到相同的问题。 AWS服务器会发生的情况是,它们每天都会几次重新部署您的代码,这会清除项目中所有新创建的文件和上载的文件。因此,如果要存储文件,并且会话也发生同样的情况,则必须使用云存储。 默认情况下,laravel将会话保存在文件中,并且每当AWS重新部署您的代码时,它都会擦除所有当前会话,因为它会删除会话文件。解决方案是将会话存储在文件之外的任何位置。所以我用我的数据库来存储会话和缓存。您可以通过
转到 config / session.php 并将驱动程序更改为数据库
运行后
php artisan session:table
php artisan迁移
这些将为您在数据库中创建会话表,这应该可以解决AWS问题。就像@ arun-a简短地说。您可以检出sessions docs以获得更多信息。