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

该文描述了如何在Vue.js应用中实现一个30分钟无操作后自动退出登录的功能。通过在App.vue组件中设置定时器,监听用户的鼠标点击事件来重置计时器。当定时器结束时,执行登出操作,包括清除token、刷新路由和显示登录提示。
摘要由CSDN通过智能技术生成

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

我的想法是这样,通过对定时器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)
        //这里设置一个新的计时器,并赋给myTimer
        this.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>

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇智波波奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值