Laravel Auth会话超时

时间:2019-03-04 21:42:42

标签: laravel session authentication

我已经看到了这方面的几个问题,到目前为止,所有答复似乎都集中在检测下一个User操作的到期时间上。 不管是否能够执行此操作,我想要的是让服务器端代码检测到到期,然后强制刷新“用户”屏幕。从概念上讲,该过程是这样的:

  1. 在服务器端检测到过期
  2. (可选)向用户发送一条消息,询问他们是否希望继续。如果没有响应,请强制注销过程并相应地建议用户。如果用户确认他们希望保留在会话中,则模拟一些活动以重置到期时间。如果未发送任何消息,只需强制一个新屏幕。

就我而言,我使用Auth登录并向用户授予管理权限。这包括访问维护表格/按钮。

基本上我不想要的是一个屏幕,因为它已经过期,提示用户a)仍在登录,b)显示他们当时在做什么的详细信息。如果用户具有特殊权限,则它们在到期后不应保持可见状态。例如,管理员正在更改用户的个人详细信息并被叫走。鉴于他/她本应终止该过程并注销,所以如果他们没有这样做,则不应在屏幕上留出详细信息以供其他人稍后查看。

理想的情况是某种形式的事件侦听器,但即使这样,我仍然不确定如何在不运行JS计时器循环的情况下强制进行屏幕更改。

我想我不是唯一有这种要求的人,所以我的问题是...

您如何在Laravel 5的约束下处理此类要求?

1 个答案:

答案 0 :(得分:0)

会话的默认值在config / session.php下定义。您可以使用config helper函数config('session.lifetime')来获取值。

对于您而言,您需要在客户端(javascript)上检查会话时间。

这里有一个代码示例,用于在会话过期之前刷新页面。该代码用于刀片模板。

@if (Auth::check()) 
    <script>
    var timeout = ({{config('session.lifetime')}} * 60000) -10 ;
    setTimeout(function(){
        window.location.reload(1);
    },  timeout);



    </script>
@endif

您可以调整代码以提示对话框,以确认用户是否要延长会话时间,并执行ajax获取或刷新会话时间。