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 中令人困惑的变量赋值
Aug 13 Javascript
js 调整select 位置的函数
Feb 21 Javascript
jquery实现心算练习代码
Dec 06 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
Apr 10 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
antd Upload 文件上传的示例代码
Dec 14 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
Apr 10 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 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禁止页面缓存的代码
2011/10/23 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
Vue数据双向绑定的深入探究
2018/11/27 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Python实现的建造者模式示例
2018/08/06 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python实现微信小程序自动回复
2018/09/10 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
金士达面试非笔试
2012/03/14 面试题
自我评价是什么
2014/01/04 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
公司员工检讨书
2014/02/08 职场文书
一分钟演讲稿
2014/04/30 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
Golang ort 中的sortInts 方法
2022/04/24 Golang
java开发双人五子棋游戏
2022/05/06 Java/Android