vue实现用户长时间不操作自动退出登录功能的实现代码


Posted in Javascript onJuly 23, 2020

一、需求说明

昨天后端开发人员让我实现一个网页锁屏,当时我一头雾水,问他为啥搞的跟安卓系统一样。他的回复是"看起来帅点"。

首先我们梳理下逻辑,先来个简化版的,用户长时间未操作时,返回登录页

二、思路

使用 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 {}
 return value || defaultValue
 },
 removeItem(key) {
 window.localStorage.removeItem(key)
 },
 clear() {
 window.localStorage.clear()
 },
}

 

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

每隔30s去检查一下用户是否过了30分钟未操作页面

// 引入路由和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() {
 currentTime = new Date().getTime()		//更新当前时间
 lastTime = stroage.getItem("lastTime");

 if (currentTime - lastTime > timeOut) { //判断是否超时

 // 清除storage的数据(登陆信息和token)
 storage.clear()
 // 跳到登陆页
 if(router.currentRouter.name == 'login') return // 当前已经是登陆页时不做跳转
 router.push({ name: 'login' })
 }
}

export default function () {
 /* 定时器 间隔30秒检测是否长时间未操作页面 */
 window.setInterval(checkTimeout, 30000);
}

 

【2】在main.js引入astrict.js

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

四、锁屏

实现网页锁屏的思路和上面自动退出登录类似,稍微改动实现如下:

【1】用户长时间未操作,弹出设置锁屏密码弹框设置锁屏密码

【2】密码(password)和锁屏状态(isLock)存入localStorage 和vuex

【3】设置成功后跳转到锁屏登录页

【4】 在路由里面判断vuex里面的isLock(为true锁屏状态不能让用户后退url和自行修改url跳转页面否则可以)

【5】用户在锁屏登录页输入刚刚设置的锁屏密码,即可解开锁屏

总结

到此这篇关于vue实现用户长时间不操作自动退出登录功能的实现代码的文章就介绍到这了,更多相关vue 长时间不操作自动退出登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
Sep 09 Javascript
JavaScript中关于iframe滚动条的去除和保留
Nov 17 Javascript
纯javascript版日历控件
Nov 24 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
详解使用Next.js构建服务端渲染应用
Jul 10 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
Apr 11 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
Jul 23 #Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 #Javascript
javascript递归函数定义和用法示例分析
Jul 22 #Javascript
简单了解vue 插值表达式Mustache
Jul 22 #Javascript
详解node.js 事件循环
Jul 22 #Javascript
jQuery+ThinkPHP实现图片上传
Jul 23 #jQuery
详解vue中v-on事件监听指令的基本用法
Jul 22 #Javascript
You might like
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
jquery 新浪网易的评论块制作
2010/07/01 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
pycharm远程调试openstack代码
2017/11/21 Python
用matplotlib画等高线图详解
2017/12/14 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
python实现堆排序的实例讲解
2020/02/21 Python
Python try except finally资源回收的实现
2021/01/25 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
一道SQL面试题
2012/12/31 面试题
Solaris操作系统的线程机制
2015/07/28 面试题
综合办公室主任职责
2013/12/16 职场文书
大课间活动制度
2014/01/18 职场文书
学雷锋月活动总结
2014/04/25 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
本科应届生求职信
2014/08/05 职场文书
个园导游词
2015/02/04 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
教师教育教学随笔
2015/08/15 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android