1、思路如下:
某系统:用户长时间不操作,退出系统,并返回登陆页。(不是监听鼠标移动、页面滚动等,这里采用长时间不触发接口调用,才执行退出系统,并返回登陆页)。
代码如下:
// 引入axios
import axios from 'axios';
// 引入vuex
import store from '@/store/';
// 提前定义参数
let time;
// 30分钟不操作,存储请求时间
function startSetTimeout() {
time = setTimeout(() => {
// 其中 LogOff 是退出接口。
store.dispatch('LogOff').then(() => {
router.push({ path: '/login' });
ElMessage({
message: '30分钟未对系统进行任何操作登陆失效,请重新登陆。',
type: 'error',
});
});
}, 1000 * 1800);
}
// HTTPrequest拦截
axios.interceptors.request.use(
(config) => {
// 每次调用接口前,清除定时器
clearTimeout(time);
// 每个接口请求发出后重新启动定时器
startSetTimeout();
},
);