Laravel 5 会话生存期

2022-08-30 13:40:19

根据拉拉维尔config/session.php

/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/

'lifetime' => 120,
'expire_on_close' => true,
'expired-session-redirect' => url(env('APP_URL'))

我已将会话的生存期设置为分钟,但我有一种感觉,我的用户在 120 分钟之前已注销。120

这是错别字吗?他们的意思是120秒,即2分钟吗?

任何人都可以对此有所了解吗?


答案 1

检查你的 php.ini:

session.gc_maxlifetime - 默认 1440 秒 - 24 分钟

session.gc_maxlifetime指定数据将被视为“垃圾”并可能被清理的秒数。在会话启动期间可能会发生垃圾回收(取决于session.gc_probability和session.gc_divisor)。

session.cookie_lifetime - 默认 0 >session.cookie_lifetime 指定发送到浏览器的 Cookie 的生存期(以秒为单位)。值 0 表示“直到浏览器关闭”。默认值为 0。另请参见 session_get_cookie_params() 和 session_set_cookie_params()。

如果它比Laravel配置的时间少,cookie将被删除,因为本地php.ini优先于Laravel配置。

您可以增加它或评论/删除。

如果未解决,您的应用程序上的某些内容正在破坏会话。

更新

发布 v5.5.22 后,会话生存期从 加载,并且不再硬编码,在 中更改。.envconfig/session.php

现在,您可以使用以下命令修改会话生存期:

SESSION_LIFETIME=90 //minutes

在您的文件中。.env


答案 2

更改应用根目录中的文件.env

SESSION_LIFETIME=120

价值以分钟为单位。


推荐