方案1: 后端处理
(1)用户切换页面或者点击按钮时需要发送请求接口,如果后端判断在5分钟之内没有请求,然后将前端的token失效
方案2: 前端处理
(1)在main.js中创建全局的事件监听器来实现对键盘抬起事件和鼠标点击事件的监听
试例:Vue 项目中全局监听键盘抬起事件和鼠标点击事件:`
import Vue from 'vue' ;
import App from './App.vue' ; const app = new Vue ( { render : h => h ( App) ,
} ) . $mount ( '#app' ) ;
window. addEventListener ( 'keyup' , function ( event ) { console. log ( '键盘抬起事件:' , event. key) ;
} ) ;
window. addEventListener ( 'click' , function ( event ) { console. log ( '鼠标点击事件:' , event. clientX, event. clientY) ;
} ) ;
app. $on ( 'keyup' , function ( event ) { console. log ( '键盘抬起事件:' , event. key) ;
} ) ; app. $on ( 'click' , function ( event ) { console. log ( '鼠标点击事件:' , event. clientX, event. clientY) ;
} ) ;
(2)当用户登录成功后,创建定时器,开始计时,当5分钟之内如果触发了鼠标点击事件或者键盘抬起事件,定时器重新计时,当时间累计满5分钟时,发送退出登录接口即可;;;
(3)如果涉及到打开了两个tab需要数据共享时,需要将计时时间存储在localeStroge或者BroadCast Channel,两个tab页面共享一个时间计时器