900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > VUE实现长时间未操作退出登录

VUE实现长时间未操作退出登录

时间:2019-12-15 01:53:40

相关推荐

VUE实现长时间未操作退出登录

背景:在现在大多系统中,为了保障用户的安全,都会有固定时间未操作则自动退出登录的功能,这里根据我目前了解的内容大致实现一个简单的。

我的想法是这样,通过对定时器setTimeOut的使用,来进行倒计时30分钟,到30分钟后触发登出的操作,如果在这期间进行点击鼠标的动作,则重置此定时器。

因为在所有的界面都需要进行这个操作,所以我直接放在App.vue中进行编写

<template><transition name="fade" mode="out-in"><router-view></router-view></transition></template><script>export default {name: 'app',//定义一个计时器data() {return {myTimer: null}},//设置监听事件,从登录界面跳转到首页的时候就进行触发watch: {'$route.path': function (){this.myTimeOut()}},//在钩子函数中设置一个全局监听,如果有点击鼠标的动作,则调用myTimeOut方法mounted() {this.$nextTick(() => {window.addEventListener('mousedown',this.myTimeOut)})},methods: {myTimeOut(){//因为登录界面不需要进行校验,所以将它排除在外let path = ['/aes/login','/']if (!path.includes(this.$route.path)) {console.log('--------计时器--------')//首先需要清楚原有的计时器,如果不清除的话无法做到重置clearTimeout(this.myTimer)//这里设置一个新的计时器,并赋给myTimerthis.myTimer = setTimeout(() => {// 在这执行登出的操作,具体情况参考您的系统中this.$store.dispatch('removeToken')this.$store.dispatch('removeRoutes')this.$router.push('/aes/login')//设置弹窗,提示过期window.alert('您的登录已经过期!')// 三十分钟}, 1000 * 60 * 30)}}}}</script><style lang="less"></style>

最后虽然实现了,不过我感觉这种方法并不好,如各位大佬有更好的方法,欢迎指导!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。