首页 > 其他分享 >Vue项目实现用户长时间不操作,自动退出登录

Vue项目实现用户长时间不操作,自动退出登录

时间:2022-11-12 15:25:15浏览次数:42  
标签:Vue 登录 getTime sessionStorage window 长时间 Date new lastTime

Vue项目实现用户长时间不操作,自动退出登录

1.实现思路

使用 mouseover事件来监测是否有用户操作页面,然后写一个定时器间隔特定时间检测是否长时间未操作页面,如果是清除token,提示登录已过期请重新登录

每隔10s去检查一下用户是否过了10秒 未操作页面
因为我这边是单点登录所以用户10秒 未操作就要跳转到单点登录系统,所以跳转这一块按实际情况来修改

(1)在 util 文件夹下创建一个 auto_loginout.js 文件

import router from '@/router'
export default function () {
    let setInterval = null;//定时器
    let timeOut = 10 * 1000 // 设置超时时间: 10秒钟
    // console.log("开始", new Date().getTime())
    // 初次向sessionStorage存入操作时间
    window.sessionStorage.setItem('lastTime', new Date().getTime())
    // 每次操作页面,更新sessionStorage存入的操作时间
    window.onload = function () {
        window.document.onmousedown = function () {
            // console.log("开始", new Date().getTime())
            window.sessionStorage.setItem('lastTime', new Date().getTime())
        }
    }
    function checkTimeout() {
        let currentTime = new Date().getTime() // 当前时间
        let lastTime = window.sessionStorage.getItem("lastTime")//上次操作的时间
        // 判断是否超时
        if (currentTime - lastTime >= timeOut) {
            // console.log("结束", new Date().getTime())
            // 清除定时器
            window.clearInterval(setInterval);
            // 清除sessionStorage
            window.sessionStorage.clear('lastTime')
            // 跳到登陆页
            if (router.history.current.fullPath !== '/' && router.history.current.fullPath !== '/login') {
                router.push("/login")
                window.location.reload()
            }
        }
    }
    /* 定时器 间隔2秒检测是否长时间未操作页面 */
    setInterval = window.setInterval(checkTimeout, 2000)
}

(2)在 main.js 中引用,通过全局方法 Vue.use() 使用

// 自动退出文件路径
import auto_loginout from '@/util/auto_loginout.js'
Vue.use(auto_loginout)

标签:Vue,登录,getTime,sessionStorage,window,长时间,Date,new,lastTime
From: https://www.cnblogs.com/mahmud/p/16883819.html

相关文章

  • Win10无法登录微软账号错误代码0x80190001的解决方法
    和控制面板内的“Internet选项”设置有关。进入“Internet选项”的“高级”选项卡。检查“HTTP”设置,不要勾选使用代理使用http;检查“安全”设置,勾选使用TLS1.2。如果仍......
  • ssh创建密钥登录
    创建密钥ssh-keygen-mPEM-trsa-b4096参数:-mPEM=密钥格式PEM-trsa要创建的密钥类型,本例中为RSA格"rsa1"(SSH-1)"rsa"(SSH-2)"dsa"(SSH-2)-b4096......
  • 登录注册模态框与腾讯短信发送验证
    登录注册模态框Header.vue<template><divclass="header"><divclass="slogan"><p>老男孩IT教育|帮助有志向的年轻人通过努力学习获得体面的工作和生活......
  • 16. VUE怎么阻止冒泡
    给事件添加stop修饰符,比如click.stop ;补充:阻止默认行为prevent修饰符,超链接的跳转,表单的默认提交;once修饰符事件只触发一次ps:事件修饰符可以连着......
  • 14. Vue2 和 Vue3 区别
    主要分为四点:1.Vue3使用了proxy替代了Object.defineProperty实现响应式数据,所以vue3的性能得到了提升;2.Vue3可以在template模板使用多个根标......
  • 13. 说一下$set,用在Vue2还是Vue3
    $set是vue2中对象用来追加响应式数据的方法;使用格式:$set(对象,属性名,值) vue3中使用proxy替代了Object.defineProperty实现对象的响应式数据,所以在......
  • Vue-router(路由)
    一、前端路由两种跳转1、URL的hash表面上看,hash路径上带#号,history路径没有带#号URL的hash也就是锚点(#),本质上是改变window.location的href属性hash的跳转不会......
  • vue3 基础-API-computed
    前些章节讲了一些常用的api如setup,ref,reactive,toRef...等,并以一个todoList的小案例来体现在vue3中如何进行解耦逻辑,以setup函数作为调度的这种后端编......
  • 创建一个新的Vue项目
    一、安装脚手架(VueCLI)检查是否有安装脚手架在DOS中输入vue命令,如果出现提示,说明没有安装  修改NPM镜像地址修改NPM镜像地址为淘宝的,要不然在安装时可能会很慢n......
  • vue的$nextTick方法
    问题:异步代码没有执行,但是同步代码已经完成逻辑,所以就需要使用$nextTick来等待dom完毕后再执行同步代码解决方法:使用nextTick()等待dom更新完毕后,在执行对应的回调......