如何防止 Laravel 中的会话/cookie 刷新?

Posted

技术标签:

【中文标题】如何防止 Laravel 中的会话/cookie 刷新?【英文标题】:How to prevent session/cookie refresh in Laravel? 【发布时间】:2016-05-06 16:46:36 【问题描述】:

我到处搜索,但找不到如何防止会话(cookie?)在 Laravel 中刷新。

我现在正在将我的网站从 Codeigniter 迁移到 Laravel。

在 Codeigniter 中,如果您将会话过期时间设置为 1 小时,那么即使您是否主动打开网站,会话也会在 1 小时后过期。

在 Laravel 中,每次打开页面时会话都会刷新。

比如我00:20登录,设置过期时间为1小时(01:20),然后在00:50打开页面,过期时间会刷新到01:50。

p>

我的问题是,如何在 Laravel 中防止这种行为?我希望它像 Codeigniter 一样保持在 01:20。

【问题讨论】:

这可能会帮助你***.com/questions/26071747/… @Drudge 嗨,谢谢你的链接。看来我需要设置一个cookie并手动检查它。 【参考方案1】:

你可以在config/session.php找到会话配置。

'lifetime' => 120, // in minutes, default 2 hours

'expire_on_close' => false,

就是这样。下面是关于会话逻辑的解释。

会话的工作

Laravel 的会话处理是全逻辑的。我举个例子:

我在下午 5:00 打开页面 A。会话将设置为 20 分钟。它会在下午 5.20 点到期,前提是用户没有任何活动! 10分钟后,我打开页面B。会话刷新,过期时间为“现在”+20分钟 明白吗?在用户的每个活动(每个新请求)之后,会话刷新/扩展

安全

Laravel 刷新会话对你来说非常安全!攻击者更难“捕获”会话!

所以我会向你推荐 Laravel 方法,而不是(过时的)CodeIgniter 方法。

【讨论】:

嗨,谢谢,但这不是我想要的。看来我需要设置一个cookie并手动检查它。会话刷新不好的一个例子是在银行网站上,你需要一个会话将在特定持续时间到期并且不保持刷新的时间。

以上是关于如何防止 Laravel 中的会话/cookie 刷新?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 会话 ID 随每个请求而变化

Laravel 4.2 将用户 ID 存储在会话数据中的啥位置?

没有 cookie 的 Laravel 会话

Laravel 7:为啥我的会话 cookie 没有在浏览器中设置?

Laravel与Socket.io Nodejs共享会话

Laravel 4 cookie 会话生命周期自动更改