22

我只是想知道是否有人知道如何在 Laravel 中检查会话超时。

您可以检查会话是否具有特定项目:

if (Session::has('name'))
{
     $name = Session::get('name');
}

但是您无法检查会话是否已过期。如果我能以更具体的方式向用户报告,那就太好了。“您的会话已超时,请重新开始。”

有什么想法吗?

4

3 回答 3

28

只需使用与会话类本身相同的逻辑即可。

if ((time() - Session::activity()) > (Config::get('session.lifetime') * 60))
{
   // Session expired
}

将它放在您的“之前”过滤器中 - 它会在每个请求上运行。

于 2013-02-04T17:27:30.790 回答
2

为什么不这样做?

if (!Session::has('name'))
{
     $sessionTimeout = 1;
}

如果会话超时,则不再设置名称。然后您可以编写一些代码来响应 $sessionTimeout == 1;

于 2013-02-04T16:05:45.423 回答
0

顺便说一句,特别是如果您需要会话生命周期,

用这个:

{{ session('lifetime') }}

在描述这一点时,

用这个:

session(['User' => $user, 'lifetime' => 3600]);
于 2019-12-03T10:26:18.933 回答