【发布时间】:2013-01-19 06:39:18
【问题描述】:
我只是想知道是否有人知道如何在 Laravel 中检查会话超时。
您可以检查会话是否有特定项目:
if (Session::has('name'))
{
$name = Session::get('name');
}
但您无法检查会话是否已过期。如果我能以更具体的方式向用户报告,那就太好了。 "您的会话已超时,请重新开始。"
有什么想法吗?
【问题讨论】:
我只是想知道是否有人知道如何在 Laravel 中检查会话超时。
您可以检查会话是否有特定项目:
if (Session::has('name'))
{
$name = Session::get('name');
}
但您无法检查会话是否已过期。如果我能以更具体的方式向用户报告,那就太好了。 "您的会话已超时,请重新开始。"
有什么想法吗?
【问题讨论】:
只需使用与会话类本身相同的逻辑即可。
if ((time() - Session::activity()) > (Config::get('session.lifetime') * 60))
{
// Session expired
}
将它放在您的“之前”过滤器中 - 它会在每个请求上运行。
【讨论】:
Call to undefined method Illuminate\Session\Store::activity() 为什么会这样?我使用 Laravel 4
activity 方法似乎从 Laravel 中消失了。 An alternate approach is documented on Laravel.io.
为什么不这样做?
if (!Session::has('name'))
{
$sessionTimeout = 1;
}
如果会话超时,则不再设置名称。然后你可以编写一些代码来响应 $sessionTimeout == 1;
【讨论】:
顺便说一句, 特别是如果您需要会话生命周期,
使用这个:
{{ session('lifetime') }}
描述时,
使用这个:
session(['User' => $user, 'lifetime' => 3600]);
【讨论】: