前端无操作一段时间返回登录页

项目场景:

公司项目需求要求页面无操作三十分钟之后就自动返回到登录页。

解决方案:

项目使用的vue技术,所以我是在App.vue添加

复制代码
<template>
  <div id="app">
    <router-view />
  </div>
</template>
<script>
export default {
  data() {
    return {
      //设置超时时间: 30分种
      timeOut: 30 * 60 * 1000,
    }
  },
  methods: {
    // 存储当前时间
    setLastTime() {
      localStorage.setItem('lastTime', new Date().getTime());
    },
    // 获取时间
    getLastTime() {
      return localStorage.getItem('lastTime');
    },
    checkTimeout() {
      // 登录页面不监听
      if (this.timeOut && this.$router.currentRoute.name === 'login') {
        this.setLastTime();
      }
      else {
        //更新当前时间
        let currentTime = new Date().getTime();
        let lastTime = this.getLastTime();
        //判断是否超时
        if (currentTime - lastTime > this.timeOut) {
          this.$router.push('/login');
          this.$message({ type: 'warning', message: '长时间未操作,需重新登录' })
          document.title='登录页'
          localStorage.removeItem("Authorization");
        }
      }
    },
  },
  mounted() {
    let that = this;
    // 每30秒 调用检查时间的方法
    this.$nextTick(function () {
      setInterval(this.checkTimeout, 30000);
    })
    // 页面监听 按下鼠标更新操作时间
    window.onload = function () {
      window.document.onmousedown = function () {
        that.setLastTime();
      }
    };
  }
};
</script>
<style>
html,
body,
#app {
  height: 100%;
  width: 100%;
  padding: 0;
  margin: 0;
  margin-top: 0;
}
</style>

注意:这样可能会出现一登录之后由于没有马上点击页面导致马上返回到导航舱,所以需要在封装请求那里,一旦接口返回就刷新lastTime

复制代码
localStorage.setItem('lastTime', new Date().getTime());
相关推荐
蹊黎13 分钟前
C++中vector类的部分简单实现
开发语言·c++·visual studio
Jmyd01235 小时前
Web端3D营销展厅技术实现路径:从素材上云到线索回流的数据链路
前端·3d·性能优化·三维数字化
半个落月5 小时前
LangChain Agent 中间件实战(上):生命周期、状态、短路与工具包
javascript·langchain
砚凝霜5 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
半个落月5 小时前
LangChain Agent 中间件实战(下):DeepAgents文件权限、长期记忆与对话摘要
javascript·langchain
程序猿追6 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓6 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播6 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全7 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
u0111026757 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画