需求场景:
系统通过监听用户指定时间内如果没有操作,强制退出到登录页面
使用方式:
可以在最外层添加,或者直接写入入口文件App.vue ,使用mixin混入,这三种方法都可以!
实现代码如下:
<script>
export default {
data () {
return {
//设置超时时间: 10分种
timeOut: 10 * 60 * 1000,
lastTimeStoreId: 'lastTime_jc'
}
},
mounted () {
let that = this
// 每30秒 调用检查时间的方法
this.$nextTick(function () {
setInterval(this.checkTimeout, 30000)
})
// 页面监听 按下鼠标更新操作时间
window.addEventListener('mousedown', this.setLastTime)
window.addEventListener('keydown', this.setLastTime)
},
created () {
},
methods: {
// 存储当前时间
setLastTime () {
localStorage.setItem(this.lastTimeStoreId, new Date()
.getTime())
},
// 获取时间
getLastTime () {
return localStorage.getItem(this.lastTimeStoreId)
},
// 删除
removeLastTime () {
localStorage.removeItem(this.lastTimeStoreId)
},
checkTimeout () {
//更新当前时间
let currentTime = new Date()
.getTime()
let lastTime = this.getLastTime()
//判断是否超时
if (currentTime - lastTime > this.timeOut) {
//超时退出系统
this.$router.push(`/login`)
}
}
}
}
</script>
以上有任何问题欢迎指正!