laravel - Laravel 身份验证会话超时
问题描述
我在这方面看到了几个问题,到目前为止,所有回复似乎都集中在检测下一个用户操作的过期时间。不管能够做到这一点,我想要的是让服务器端代码检测到过期,然后强制刷新用户屏幕。从概念上讲,这个过程是这样的:
- 在服务器端检测到过期
- 可选地,向用户发送一条消息,询问他们是否希望继续。如果没有响应,请强制注销过程并相应地通知用户。如果用户确认他们想要保持会话,然后模拟一些活动来重置过期时间。如果没有发送消息,只需强制一个新屏幕。
就我而言,我使用 Auth 登录并向用户授予管理权限。这包括访问维护表格/按钮。
基本上我不想要的是留下一个屏幕,因为它是过期前的,表明用户 a) 仍然登录并且 b) 显示他们当时正在做的事情的详细信息。如果用户拥有特殊权限,他们不应在到期后保持可见。例如,管理员正在更改用户的个人详细信息并被叫走。鉴于他/她本应终止进程并注销,如果他们未能执行此操作,则不应将详细信息留在屏幕上以供其他人稍后查看。
理想的情况是某种形式的事件侦听器,但即便如此,我也不确定如何在不运行 JS 计时器循环的情况下强制更改屏幕。
我会假设我不是唯一一个有这种要求的人,所以我的问题是......
你如何在 Laravel 5 的约束下处理这种类型的需求?
解决方案
会话的默认值在 config/session.php 下定义。您可以使用 config helper function 获取该值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 来获取或刷新会话时间。
推荐阅读
- javascript - 循环通过对象时渲染不起作用
- opengl - 如何在“相机”始终瞄准对象的OpenGL中通过鼠标拖动移动“相机”?
- paypal - 获取沙盒 PDT
- android - 在 startResolutionForResult 之后未在活动或片段中调用 onActivityResult
- python - 如何对在 Python 中将 LAT 和 LON 十进制度坐标存储在不同图层中的栅格进行地理配准?
- c# - 插入后是否可以刷新数据?
- php - 试图用不同的 $var 链接不同的函数
- facebook - Facebook Marketing API - 通过号召性用语从现有帖子创建广告
- python - python中bfs算法的状态空间树
- javascript - 使用写入函数时,Knockout JS 可写计算值不会触发另一个计算值