我想知道有没有人知道如何在Laravel中检查会话超时。
您可以检查会话是否有特定的项目:
if (Session::has('name'))
{
$name = Session::get('name');
}
但是您无法检查会话是否已过期。如果能够更具体地向用户报告,那将是很好的。"您的会话已超时,请重新开始。"
有任何想法吗?
只需使用与会话类本身相同的逻辑。
if ((time() - Session::activity()) > (Config::get('session.lifetime') * 60))
{
// Session expired
}
将此代码放入您的“before”过滤器中-它将在每个请求上运行。
为什么不这样做呢?
if (!Session::has('name'))
{
$sessionTimeout = 1;
}
如果会话超时,那么名称将不再设置。您可以编写一些代码来响应 $sessionTimeout == 1;
顺便说一下,如果你需要会话生命周期,
可以使用这个:
{{ session('lifetime') }}
当描述此内容时,
请使用此代码:
session(['User' => $user, 'lifetime' => 3600]);
if(session()->missing("name") && session()->missing("email")) {
// Replace with your own logic to handle the missing session
throw SessionNotFoundException;
}
name
和email
都是两个应该始终存在于会话中的会话键。检查两个键更加健壮,可以防止由于错误导致其中一个键缺失时触发条件。