首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel Auth会话超时

Laravel Auth会话超时
EN

Stack Overflow用户
提问于 2019-03-05 05:42:42
回答 1查看 11K关注 0票数 3

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

在服务器side

  • Optionally,上检测到
  1. 过期时,将向用户发送一条消息,询问他们是否要继续。如果没有响应,则强制注销过程并相应地建议用户。如果用户确认他们想要留在会话中,那么可以模拟一些活动来重置过期时间。如果没有发送消息,只需强制创建一个新屏幕。

在我的示例中,我使用Auth登录并向用户授予管理权限。这包括访问维护表单/按钮。

基本上,我不想要的是留下一个屏幕,因为它是到期前,表明用户是a)仍然登录和b)显示他们当时正在做什么的细节。如果用户具有特殊权限,则这些权限在到期后不应保持可见。例如,管理员正在更改用户的个人详细信息,并被呼叫离开。假设他/她应该终止该过程并注销,如果他们未能完成此操作,则不应将详细信息留在屏幕上,供其他人稍后查看。

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

我假设我不是唯一一个有这种需求的人,所以我的问题是……

如何在Laravel 5的约束下处理这种类型的需求?

EN

回答 1

Stack Overflow用户

发布于 2019-03-05 07:33:59

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

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

下面是一个在会话到期前刷新页面的代码示例。此代码用于刀片模板。

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



    </script>
@endif

您可以调整代码以通过一个对话框进行提示,以确认用户是否希望延长其会话时间,并执行一个ajax来获取或刷新会话时间。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54991984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档