如何防止 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 4.2 将用户 ID 存储在会话数据中的啥位置?