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 innerText和innerHtml应用
Jan 28 Javascript
jquery实现鼠标滑过显示提示框的方法
Feb 05 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
May 14 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
Jan 31 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
vue实现多级菜单效果
Oct 19 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
python函数装饰器用法实例详解
2015/06/04 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
个人合作协议书范本
2014/04/18 职场文书
《云房子》教学反思
2014/04/20 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android