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 相关文章推荐
科讯商业版中用到的ajax空间与分页函数
Sep 02 Javascript
javascript显示隐藏层比较不错的方法分析
Sep 30 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
javascript object array方法使用详解
Dec 03 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
讨论html与javascript在浏览器中的加载顺序问题
Nov 27 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
使用BootStrap实现用户登录界面UI
Aug 10 Javascript
jQuery实现验证码功能
Mar 17 Javascript
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
php&java(一)
2006/10/09 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript 获取元素样式必杀技
2014/05/04 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
js实现简单模态框实例
2018/11/16 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
小程序转发探索示例
2019/02/19 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python下Fabric的简单部署方法
2015/07/14 Python
利用Python破解斗地主残局详解
2017/06/30 Python
Python文件的读写和异常代码示例
2017/10/31 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
Python跳出多重循环的方法示例
2019/07/03 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
趣味游戏活动方案
2014/02/07 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang