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中var声明变量作用域的推断
Dec 16 Javascript
jquery实现奇偶行赋值不同css值
Feb 17 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
javascript使用正则表达式检测IP地址
Dec 03 Javascript
JavaScript判断用户是否对表单进行了修改的方法
Mar 18 Javascript
JavaScript String 对象常用方法总结
Apr 28 Javascript
jQuery UI结合Ajax创建可定制的Web界面
Jun 22 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
js转换对象为xml
2017/02/17 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python ini文件常用操作方法解析
2020/04/26 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
2014财务人员自我评价范文
2014/09/21 职场文书
小学中等生评语
2014/12/29 职场文书
保送生自荐信
2015/03/06 职场文书
立项申请报告范本
2015/05/15 职场文书
新学期感想
2015/08/10 职场文书
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技