【问题标题】:Laravel 4 session doesn't expire after lifetime limitLaravel 4 会话在生命周期限制后不会过期
【发布时间】:2014-08-16 22:58:24
【问题描述】:

我在会话配置文件中设置了'lifetime' => 10,但它根本不会过期。

在具有该设置的 laravel 3 中,登录后,当超过 10 分钟的限制时,会话正确过期,用户被重定向到再次登录。

在 laravel 4 中它不会发生。 10 分钟后,我可以刷新,做任何事情,但会话仍然有效。

我在同一台机器上使用类比设置进行测试...我错过了什么?

【问题讨论】:

  • 我不知道您的应用程序出了什么问题,但会话 lifetime 正在与我合作。如果您的会话driver 是文件,请确保它对app/storage 文件夹具有写入权限。为了快速测试,您可以尝试使用'lifetime' => 1 而不是 10 分钟。

标签: php authentication laravel


【解决方案1】:

我明白了。问题在于配置对 lifetime 和 expire_on_close。

如果 expire_on_close 设置为 true,laravel 4 将忽略 lifetime。我有:

'lifetime' => 1,
'expire_on_close' => true,

在这种情况下,会话在 1 分钟后有效 - 它只会在关闭浏览器后过期。我把它改成:

'lifetime' => 1,
'expire_on_close' => false,

现在会话将在 1 分钟后到期。无论浏览器是否关闭 - 足够接近我想要的。

我感到困惑并且之前没有弄清楚的原因是那里的 cmets 在这件事上并不清楚,并且在 Laravel 3 中它的工作方式不同......

【讨论】:

  • 这是文档中的任何地方吗?真的应该。我也遇到了同样的问题,不知道出了什么问题。从安全的角度来看,我不同意这种逻辑,安全应用需要能够设置也会过期的会话 cookie。
  • @JonoCoetzee 我在文档中没有找到它,只有配置文件中的 cmets 给了我一些提示 - 总而言之,我花了几个小时测试这种行为并弄清楚了。我也同意它应该更好地工作,总是允许 cookie 过期
  • 今天也面临同样的问题,但在我的情况下,我需要同时支持,会话生命周期为 8 小时,以防用户关闭浏览器也被破坏。也许有关于这个主题的任何信息?
  • 谢谢。这也适用于 laravel 5.1。有线问题一。
  • 我在我的vendor/laravel 文件夹中搜索expire_on_close,只找到一个结果。 expire_on_close 配置值在这里使用:github.com/laravel/framework/blob/5.6/src/Illuminate/Session/… 这个问题(以及我自己的经验)表明 Tom 是对的:github.com/laravel/framework/issues/9321#issuecomment-113331445 我将提供一个拉取请求以改进 github.com/laravel/laravel/blob/v5.6.33/config/session.php#L23 的 cmets,因为文档 (@987654324 @) 不要提这个。
猜你喜欢
  • 2016-11-21
  • 2014-08-10
  • 1970-01-01
  • 2018-08-29
  • 2017-09-04
  • 2019-06-17
  • 2017-11-08
  • 2018-02-15
  • 1970-01-01
相关资源
最近更新 更多