我正在session.timeout使用一种中间件(适用于Laravel Web应用程序)覆盖价值,但就超时会话而言,这似乎并没有影响。虽然如果我调试它显示出价值,我已经覆盖了。
Config::set('session.lifetime', 1440);
Run Code Online (Sandbox Code Playgroud)
默认值如下:
'lifetime' => 15,
Run Code Online (Sandbox Code Playgroud)
我正在工作的网站对大多数用户来说会话寿命很短,但是对于某些用户,我想提供更长的会话寿命。
Laravel 5.7 中有没有办法找出用户当前会话到期之前还剩多少时间?
编辑
我还想检查来宾和登录用户的当前会话何时到期。
此外,在当前的答案中,似乎存在冲突的想法,即会话将在登录后恰好“SESSION_LIFETIME”分钟过期,而其他人则认为会话在上次用户活动后过期。最好澄清哪个是正确的。然后还有如何获取最后的活动时间以及会话中的活动的分类。
另外,我认为 Session::activity() 已在 Laravel 5.7 中删除。
可能的解决方案
感谢下面的@bharat-geleda,如果您使用 Laravel 5.7 并在数据库中存储会话,这是一个可行的解决方案。
$last_activity = \DB::table('sessions')->select('last_activity')->where('id', session()->getId())->first()->last_activity;
$session_time_remaining_minutes = ($last_activity + (\Config::get('session.lifetime') * 60) - time()) / 60;
dd($session_time_remaining_minutes);
Run Code Online (Sandbox Code Playgroud)
我目前不清楚“last_activity”何时更新,但页面刷新时不会发生这种情况。
我在登录页面等待 300 秒,然后单击提交按钮,然后单击提交按钮后出现“会话已过期”。但预期结果应该是成功登录。
你知不知道怎么?