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 相关文章推荐
jquery text()要注意啦
Oct 30 Javascript
Javascript 判断客户端浏览器类型代码
Mar 01 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
Nov 27 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
Mar 03 Javascript
jQuery原型属性和原型方法详解
Jul 07 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
Bootstrap风格的WPF样式
Dec 07 Javascript
Vue-resource实现ajax请求和跨域请求示例
Feb 23 Javascript
Vuejs实现购物车功能
Nov 05 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
Sep 11 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
Nov 04 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
Zend Framework+smarty用法实例详解
2016/03/19 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
python实现备份目录的方法
2015/08/03 Python
Python Flask-web表单使用详解
2017/11/18 Python
django修改models重建数据库的操作
2020/03/31 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
python程序需要编译吗
2020/06/19 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
Farnell德国:电子元器件供应商
2018/07/10 全球购物
行政文员岗位职责
2013/11/08 职场文书
工业自动化专业毕业生推荐信
2013/11/18 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
企业标语口号
2014/06/10 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
中学团支部工作总结
2015/08/13 职场文书
自荐信大全
2019/03/21 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Java基于字符界面的简易收银台
2021/06/26 Java/Android