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 相关文章推荐
jquery UI 1.72 之datepicker
Dec 29 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
Nov 14 Javascript
js调试系列 初识控制台
Jun 18 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
在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字符串分割函数explode的实例代码
2013/02/07 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
Javascript Objects详解
2014/09/04 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
Python迭代器与生成器用法实例分析
2018/07/09 Python
pyshp创建shp点文件的方法
2018/12/31 Python
Python发展史及网络爬虫
2019/06/19 Python
django中使用POST方法获取POST数据
2019/08/20 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
小学生作文评语集锦
2014/12/25 职场文书
升学宴学生答谢词
2015/01/05 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
2015年项目工作总结
2015/04/29 职场文书
学习党史心得体会2016
2016/01/23 职场文书