vue3页面无操作,一段时间后自动退出登录

场景:用户登录系统,设置超时时间为20分钟,用户超过20分钟未点击页面,自动退出登录

ps:后端有token校验,就不用在页面修改了,弊端是用户机器的时间修改,判断也就不准确了。

 大概思路就是,登录之后获取时间戳,然后每次点击鼠标获取点击的时间戳,用点击的时间戳减去登录成功的时间戳然后与超时时间作比较,时间戳相减数值单位是毫秒,注意换算,sessionStorage.getItem('loginTime')是我在登陆方法存放的值,用来判断用户是否是登陆状态,只有在该值不为空也就是登录状态下才会触发清除token,退出登录

modal是框架封装的,具体情况自己解析写一下把。

<template>
  <div id="app" @click="isTimeOut">
    <router-view />
  </div>
</template>

<script>
import { Modal } from '@arco-design/web-vue'

export default {
  name: 'App',

  data() {
    return {
      lastTime: null,
      currentTime: null,
      //10分钟未检测到鼠标点击就退出登录,后台正常校验20h
      timeOut: 10 * 100 * 60,
    }
  },
  created() {
    this.lastTime = new Date().getTime()
  },
  methods: {
    isTimeOut() {
      console.log('点击')
      this.currentTime = new Date().getTime()
      // 判断上次最后一次点击的时间和这次点击的时间间隔
      if (this.currentTime - this.lastTime > this.timeOut) {
        if (null != sessionStorage.getItem('loginTime')) {
          Modal.warning({
            title: '提示',
            content: '身份验证已过期,请重新登录',
            onOk: () => {
              localStorage.clear()
              sessionStorage.clear();
              location.reload()
            },
          });

        }
      } else {
        // 如果在期限内点击,则把这次点击的时间覆盖掉之前存的最后一次点击的时间
        this.lastTime = new Date().getTime()
      }
    }
  }
}
</script>

因为组长提到这个功能了,先是百度看了一些方法,理清思路,慢慢摸索出来的,判断用户是否登录是很有必要的,不能在已经退出或者未登录情况下一直提示用户身份过期,晚上依旧难眠,辗转反侧,把这个小功能记录下吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

庞胖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值