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 相关文章推荐
Mootools 1.2教程 事件处理
Sep 15 Javascript
javascript中的delete使用详解
Apr 11 Javascript
多个js毫秒倒计时同时进行效果
Jan 05 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
js重写alert事件(避免alert弹框标题出现网址)
Dec 04 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
如何利用React实现图片识别App
Feb 18 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
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
用python处理MS Word的实例讲解
2018/05/08 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Python tkinter三种布局实例详解
2020/01/06 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
Java程序员面试题
2016/09/27 面试题
名企HR怎样看待求职信
2014/02/23 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
诉讼授权委托书
2014/10/15 职场文书
干部理论学习心得体会
2016/01/21 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript