JWT如何实现用户特定时间内不操作自动登出

设置:
JWT_TTL = 5;
JWT_REFRESH_TTL = 60;
目前效果:token过期后在60分钟内能够自动刷新token,60分钟以后提示‘token过期并不再刷新’,

问题:
现在我想做到用户30分钟内没操作就自动登出,能不能实现到,如果可以,要怎么设置

try{
        if($this->auth->parseToken()->authenticate()){
            $token=$this->auth->getToken()->get();
            return $next($request);
        }
    }catch(TokenExpiredException $e){
        try{
            $token = $this->auth->refresh();
        }
    }
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

所有接口都返回一下新的token,30分钟过期,也就是说前端所有接口(只要是登陆的)收到响应先替换本地的token

1年前 评论
ilike_lbh (楼主) 1年前
ilike_lbh (楼主) 1年前
讨论数量: 21

我们是前端用JS实现的... :joy:

1年前 评论

有做单点登录吗

1年前 评论

把 token 在服务端存一份,每次请求进来记录当前请求时间。搞一个异步延时队列,30分钟后执行,没活动的就把token删了。

1年前 评论
kis龍 1年前
declandragon (作者) 1年前
kis龍 1年前
勇敢的心 1年前

所有接口都返回一下新的token,30分钟过期,也就是说前端所有接口(只要是登陆的)收到响应先替换本地的token

1年前 评论
ilike_lbh (楼主) 1年前
ilike_lbh (楼主) 1年前

1.登录成功之后,返回前端token,token设置不过期

2.以token为key,1为值,设置一个30分钟的缓存

3.在验证token之前先验证缓存,如果缓存没有过期,重复执行第2步。如果缓存过期,直接执行退出操作,token作废

1年前 评论
ilike_lbh (楼主) 1年前
阿珂 1年前
win27149 (作者) 1年前
ShiKi

你写个刷新token的接口,前端发现快过期了来找你换就可以了.

1年前 评论
ilike_lbh (楼主) 1年前
ilike_lbh (楼主) 1年前
ShiKi (作者) 1年前
ShiKi (作者) 1年前

你解析一下token的生成时间,发现是30min前生成的,直接返回错误,让前端自动登录

1年前 评论

(我的token认证跟楼主是大致一样的)

希望有所帮助,我是这么解决的:

1.登录后签发token,大概4个小时

2.请求认证接口时用中间件来认证

3.检查token是否过期 如果token过期了,继续保持本次的请求,在本次业务处理完毕后在headers中返回newToken,并且把这次的token放到redis中,以便token作废

4.前端接收到返回结果,判断返回请求头中是否有newToken信息,如果有的话就更换本地token

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!