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 相关文章推荐
js字母大小写转换实现方法总结
Nov 13 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
Aug 13 Javascript
Javascript 绘制 sin 曲线过程附图
Aug 21 Javascript
理解javascript中Map代替循环
Feb 26 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
Feb 08 Javascript
vue-dialog的弹出层组件
May 25 Javascript
Vue.js教程之axios与网络传输的学习实践
Apr 29 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
Jun 05 Javascript
vue-router 控制路由权限的实现
Sep 24 Javascript
前端vue如何使用高德地图
Nov 05 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php统计文章排行示例
2014/03/04 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
vue之延时刷新实例
2019/11/14 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
django API 中接口的互相调用实例
2020/04/01 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
越南综合购物网站:Lazada越南
2019/06/10 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
JPA的优势都有哪些
2013/07/04 面试题
考试退步检讨书
2014/01/15 职场文书
国税会议欢迎词
2014/01/16 职场文书
爱心活动计划书
2014/04/26 职场文书
公司口号大全
2014/06/11 职场文书
社区植树节活动总结
2015/02/06 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python