如何在Laravel中设置会话超时?

2022-08-30 14:23:11

是否有一种固有的方法来设置会话在特定时间后过期。我当前的设置似乎在30分钟后到期,我想禁用或至少增加它,但我在Laravel中找不到任何可以设置的地方?


答案 1

在你有:app/config/session.php

lifetime

允许您以分钟为单位设置会话过期时间(而不是以秒为单位)的选项

'lifetime' => 60,

表示该会话将在一小时后过期。

这里还有一个设置:

'expire_on_close' => true,

决定会话是否将在浏览器关闭时过期。

您可能感兴趣的其他设置也是以下值:php.ini

session.cookie_lifetime = 0

session.gc_maxlifetime = 1440

这些是默认值。

第一个表示会话cookie将存储多长时间 - 默认值为0(直到浏览关闭)。第二个选项意味着PHP可以破坏此会话数据的时间。

我说可能是因为文件中还有另一个选项可以决定运行垃圾回收器的机会。默认情况下,只有1%的可能性在1440秒(24分钟)后,此会话数据将被破坏。session.gc_probabilityphp.ini


答案 2

检查你的php.ini,它有一个session.gc_maxlifetime的值(还有session.cookie_lifetime),它设置了PHP允许会话持续多长时间的限制。当 Laravel 设置选项时,它将作为 中设置的值传递。cookie_lifetimeapp/config/session.php

但是,会话不会在达到最大生存期后立即过期。发生的情况是,经过该时间后,会话就可以由垃圾回收器删除。

解决问题

一种解决方法是检查您的文件。您可能已定义此变量:。默认情况下,它设置为 1440。只需评论或删除它php.inisession.gc_maxlifetime

从那时起,您的会话可以使用会话.php配置值正常工作。


推荐