Laravel身份验证会话超时

4
我在这个领域看到了几个问题,到目前为止,所有的回答似乎都集中在检测下一个用户操作的过期上。无论能否做到这一点,我想要的是服务器端代码检测到过期并强制刷新用户屏幕。从概念上讲,这个过程大致如下:
  1. 检测到服务器端的过期
  2. 可选地,向用户发送消息询问他们是否希望继续。如果没有回应,则强制退出登录流程并相应地通知用户。如果用户确认要保持会话状态,则模拟一些活动以重置过期时间。如果没有发送消息,则直接强制显示新的屏幕。

在我的情况下,我使用Auth进行登录,并授予用户管理权限。这包括访问维护表单/按钮。

基本上,我不希望屏幕保持在过期前的状态,暗示用户仍然登录,并显示他们当时正在做什么的详细信息。如果用户有特殊权限,它们在过期后不应该保留在屏幕上。例如,管理员正在更改用户的个人详细信息并被叫走了。鉴于他/她应该终止进程并注销登录,如果他们没有这样做,详细信息就不应该留在屏幕上供其他人在以后的某个时候看到。

理想情况下,将有一些形式的事件监听器,但即使如此,我仍然不确定如何强制更改屏幕,除非运行JS计时器循环。

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

在Laravel 5的约束条件下,你如何处理这种类型的要求?

1个回答

7

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

在您的情况下,您需要在客户端(javascript)检查会话时间。

这是一个在会话过期之前刷新页面的代码示例。此代码适用于blade模板。

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



    </script>
@endif

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接