长时间不点击页面或者不操作页面,使其跳转到登录页重新登陆

572 阅读1分钟

思路其实很简单,就是用户长时间不操作页面让其跳转到登陆页面,首次加载的时候设置一个时间间隔和记录下首次加载的当前时间,可以用时间戳,然后点击的时候记录一个点击的时间,此时判断点击时间-首次加载的当前时间是否大于规定的时间间隔,如果大于的话则返回登陆页面,并且重置首次加载的时间为当前时间,如果不大于仅仅重置首次加载时间为当前时间,代码如下

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

<script>
export default {
  data() {
    return {
      lastTime: null,
      currentTime: null,
      timeOut: 30 * 60 * 1000 // 设置超时时间:30分钟
    };
  },
  methods: {
    isTimeOut() {
      this.currentTime = new Date().getTime(); // 记录这次点击的时间
      if (this.currentTime - this.lastTime > this.timeOut) {
        // 判断上次最后一次点击的时间和这次点击的时间间隔是否大于30分钟
        if (localStorage.getItem("LoginStatus")) {
          // 如果是登录状态
          this.$router.push("/login");
          this.lastTime = new Date().getTime();
        } else {
          this.lastTime = new Date().getTime();
        }
      } else {
        this.lastTime = new Date().getTime(); // 如果在30分钟内点击,则把这次点击的时间记录覆盖掉之前存的最后一次点击的时间
      }
    }
  },
  created() {
    this.lastTime = new Date().getTime();
  }
};

注意的是vue项目,你需要在APP.vue里面操作,给边界元素即id为APP的div盒子注册该方法。