vue中js判断长时间不操作界面自动退出登录

使用 mouseover 事件来监测是否有用户操作页面,写一个定时器间隔特定时间检测是否长时间未操作页面,如果是,退出登陆,清除token,返回登录页

1.在util文件夹下创建一个storage.js封装localStorage方法

export default {
  setItem(key, value) {
    value = JSON.stringify(value);
    window.localStorage.setItem(key, value)
  },
  getItem(key, defaultValue) {
    let value = window.localStorage.getItem(key)
    try {
      value = JSON.parse(value);
    } catch(e) {}
    return value || defaultValue
  },
  removeItem(key) {
    window.localStorage.removeItem(key)
  },
  clear() {
    window.localStorage.clear()
  },
}

2.在util文件夹下创建一个astrict.js

// 引入路由和storage工具函数
import storage from '@/utils/storage'
import router from "@/common/router"
 
let lastTime = new Date().getTime()
let currentTime = new Date().getTime()
let timeOut = 30 * 60 * 1000  //设置超时时间: 30分钟
 
window.onload = function () {
  window.document.onmousedown = function () {
    stroage.setItem("lastTime", new Date().getTime())
  }
};
 
function checkTimeout() {
  if(router.currentRouter.name === 'login') return // 当前已经是登陆页时不做跳转
  //if(router.currentRouter.fullPath === '/login') return // 当前已经是登陆页时不做跳转
  currentTime = new Date().getTime()    //更新当前时间
  lastTime = storage.getItem("lastTime");
 
  if (currentTime - lastTime > timeOut) { //判断是否超时
    // 清除storage的数据(登陆信息和token)
    storage.clear()
    // 跳到登陆页
    router.push({ name: 'login' })
    //router.push('/login')
  }
}
 
export default function astrict () {
  /* 定时器 间隔30秒检测是否长时间未操作页面 */
  window.setInterval(checkTimeout, 30000);
}

3.在main.js引入astrict.js

import Astrict from '@/utils/astrict'
Vue.use(Astrict)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue实现判断未操作自动退出登录,可以通过以下步骤来完成: 1. 在Vue登录页面,添加一个计时器对象和一个变量来存储计时器的ID和登录状态。代码如下所示: ``` data() { return { timer: null, isLoggedIn: false } }, ``` 2. 在用户登录成功后,设置`isLoggedIn`为`true`,并启动一个定时器来判断未操作时间。代码如下所示: ``` login() { // 用户登录成功后的操作... // 设置登录状态为已登录 this.isLoggedIn = true; // 启动计时器,5分钟后执行自动退出登录 this.timer = setTimeout(this.logout, 300000); }, ``` 3. 在用户的任何操作(例如点击、滚动等)之前,先清除之前的计时器,并重新设置一个计时器,以重新开始计时。代码如下所示: ``` handleUserAction() { // 清除上一次的计时器 clearTimeout(this.timer); // 启动新的计时器,重新开始计时 this.timer = setTimeout(this.logout, 300000); }, ``` 4. 实现自动退出登录的函数`logout`,在该函数将`isLoggedIn`设置为`false`,并触发退出登录的操作。代码如下所示: ``` logout() { // 设置登录状态为未登录 this.isLoggedIn = false; // 执行退出登录的操作... }, ``` 通过以上步骤,当用户登录后,在5分钟内没有进行任何操作时,会触发自动退出登录的操作。每次用户有操作时,计时器会被清除并重新开始计时,从而可以实现判断未操作自动退出登录的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值