react 项目实现监控鼠标移动超时未操作踢出登录页面

这篇具有很好参考价值的文章主要介绍了react 项目实现监控鼠标移动超时未操作踢出登录页面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

src目录下新建utils文件夹,用来存放功能组件文件,新建overtime.js,参考以下代码:

//外部定义用于清除本地缓存
import {removeToken} from './auth.js'

let timeOut = 10 * 1000;
let lastTime = new Date().getTime();
let currentTime = new Date().getTime();
//获取最外层div
let ICE_CONTAINER = document.getElementById('root');
// timeType 判断页面是否为登录页,如果是不执行踢出登录操作,初始状态为false
let timeType = false;

const OvertimeLogin=()=> {
   let testTime=()=> {//定时器
        /* 检测鼠标移动事件 */
        ICE_CONTAINER.addEventListener('mousemove', function() {
            // 更新最后的操作时间(鼠标每移动一次,就会重新计算时间)
            lastTime = new Date().getTime();
        })
        //获取当前路径   是否在登录页 还在主页即为true
			timeType = window.location.href.indexOf('login') < 0;
			//更新当前时间
			currentTime = new Date().getTime();
			console.log('currentTime', (currentTime - lastTime)/1000)
        //判断是否超时
        if (currentTime - lastTime > timeOut) {
            if (timeType) {
                console.log('超时拉')
				// 超时操作
				console.log("长时间未操作,请重新登陆");
                // 清除定时器
				window.clearInterval(global.overtime)
                //清除本地缓存
				removeToken()	
                //跳转至登录页	
				global.props.history.push('/login')
				lastTime = new Date().getTime();
		    } else {
		      lastTime = new Date().getTime();
		      console.log('我不会踢出的')
		    }
        }
    }
	return testTime
}	

export default OvertimeLogin

项目内需要此功能的页面使用

import OvertimeLogin from '../../overtime'

// 生命周期内触发函数,十秒鼠标不操作会退回登录页
componentDidMount(){		
//windows上设置一个循环定时器,每隔一秒调用一次监听函数,并定义在全局global上,用于超时后清除
    global.overtime = window.setInterval(OvertimeLogin(), 1000);
}

运行项目,登陆成功后,不移动鼠标,控制台开始计时显示

react 项目实现监控鼠标移动超时未操作踢出登录页面

 10秒后自动跳转至登录页

遇到的问题:

函数内跳转获取不到props,会报错undefined,

方法一:在登录页全局定义global.props = props

函数内可使用

react 项目实现监控鼠标移动超时未操作踢出登录页面

 方法二:使用Eventbus,传值

参考链接

React配合axios请求拦截校验session,403跳转至登陆页面_六卿的博客-CSDN博客_axios拦截403这个在Vue中很简单的就解决了,直接引入router,然后router.push,但是在React中,我们要使用props.history.push进行跳转,但是怎么在axios.js中拿到props呢?又是个问题。https://blog.csdn.net/qq_43291759/article/details/122575849

 相应的监听BOM事件还有click,keydown,mousewheel等,更详细的用法可参考以下链接:

监听用户长时间未操作页面就自动退出登录_JcaiYang的博客-CSDN博客_网页不操作自动退出登录// 需求:当用户一定时间内没有操作页面,则自动退出登录。操作页面包括页面点击、摁下键盘、鼠标移动、鼠标滚动滚轴等。由于这些操作会频繁操作,建议使用防抖函数来减少性能的消耗。以下是js部分。// 获取浏览器页面var zBody = document.querySelector('html');// 获取服务器的超时登录时长let timeout = localStorage.getItem('timeout') || 0;// 轮询var zNum = 0; // 用户未操作页面时长...https://blog.csdn.net/Jcai_0120/article/details/115539784?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277861016782248542286%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165277861016782248542286&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-115539784-null-null.142%5Ev10%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=%E7%BD%91%E9%A1%B5%E4%B8%8D%E6%93%8D%E4%BD%9C%E8%87%AA%E5%8A%A8%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95&spm=1018.2226.3001.4187前端react 实现监控鼠标移动超时未操作踢出登录页面_前端小小乐的博客-CSDN博客_react监听鼠标移动前言现有系统超时踢出登录实现的是页面操作调取服务时获取,这样就有一个弊端,列如:在未调取服务时,系统填写完相关信息点击提交才知道登录超时踢出登录,用户实用性不佳。现在想到一个方法就是前端获取用户鼠标是否移动,未移动一定时间后,前端实现踢出登录操作。1.给页面最外层的div增加监听事件let ICE_CONTAINER = document.getElementById('app');//鼠标最后的操作时间let lastTime = new Date().getTime();//当前时间lehttps://blog.csdn.net/gxl5201314lele/article/details/114965936?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277595516782248533170%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165277595516782248533170&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-114965936-null-null.142%5Ev10%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=react%E5%AE%9E%E7%8E%B0%E7%9B%91%E6%8E%A7%E9%BC%A0%E6%A0%87&spm=1018.2226.3001.4187文章来源地址https://www.toymoban.com/news/detail-488258.html

到了这里,关于react 项目实现监控鼠标移动超时未操作踢出登录页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 本科毕设项目丨眼睛控制鼠标移动

    本文选用Visual Studio 2019开发工具,选择C++编程语言,同时结合了基于Qt的应用程序架构与OpenCV计算机视觉库进行联合开发。 包含“摄像头的打开”,“人脸检测” ,“人眼检测”,“瞳孔检测”,“眼控鼠标”等功能 摄像头的打开 采用了 opencv中 video capture函数 VideoCapture c

    2024年02月10日
    浏览(32)
  • 探索React Native认证实战示例项目:打造安全的移动应用体验

    项目地址:https://gitcode.com/hezhii/react-native-auth-example 在移动开发领域,React Native以其跨平台和高效性能而备受青睐。如果你正在寻找一个直观的、基于React Native的身份验证实现示例,那么这个项目—— react-native-auth-example ,将会是你的理想之选。 react-native-auth-example 是一个简单

    2024年04月27日
    浏览(41)
  • 键盘怎么控制鼠标?键盘控制鼠标实现点击和移动

    鼠标在电脑操作过程中非常重要,可是有时遇到尴尬的问题,就是摸鱼的时候觉得一直点击鼠标声音太大,或者舍友都睡觉了,你突然之间需要浏览一些网页,一直点击鼠标会产生很大的噪声,这时候该怎么办呢?如果你是笔记本,配合鼠标版可以解决。如果你正好有一个静

    2024年02月06日
    浏览(52)
  • unity实现鼠标拖拽物品移动

    unity实现物品拖拽,3D创景需要注意的是一个屏幕坐标转换为世界坐标和世界坐标转换屏幕坐标,熟悉他们之间的转化,就没什么难度了 从摄像机发射一条射线,通过射线检测到鼠标点击的物体,将物品的世界坐标转换为屏幕坐标 将鼠标的位置为,鼠标点击的XY轴和物品的

    2024年02月11日
    浏览(76)
  • java编程实现使用鼠标移动一个圆

    如下练习: 主要利用鼠标移动事件和(按下、释放、单击、进入或离开)鼠标事件,当鼠标点击时,发生mousePressed事件,判断鼠标点击的坐标是否在圆内,在移动鼠标,发生mouseDragged事件, 如果鼠标刚开始按下时在圆内,按下移动鼠标时,更新圆的坐标,当释放鼠标时,移

    2024年02月11日
    浏览(55)
  • QGraphicsView中重写鼠标事件实现图片的移动

            本文讲的是如何在PyQt5的组件QGraphicsView中重写鼠标事件实现图片的移动。         PyQt5作为强大的GUI编程工具,免不了会拿来做一些图片的显示和处理问题,有的会使用QPainter作为动态显示图片的工具,QLabel是显示静态图片的主推。但是我在工作中遇到了超大

    2023年04月14日
    浏览(45)
  • 微信开发之一键踢出群聊的技术实现

    简要描述: 删除群成员 请求URL: http://域名地址/deleteChatRoomMember 请求方式: POST 请求头Headers: Content-Type:application/json Authorization:login接口返回 参数: 参数名 必选 类型 说明 wId 是 string 登录实例标识 chatRoomId 是 String 群号 userList 是 String 群成员微信id,多个已 \\\",\\\" 分割 返回

    2024年02月10日
    浏览(38)
  • 使用Windows API实现键盘鼠标监控钩子

    本文介绍了如何使用Windows API中的SetWindowsHookEx和RegisterHotKey函数来监控键盘和鼠标活动。特别地,我们将详细讨论RegisterHotKey函数的用法,该函数允许开发者注册全局热键并定义这些热键触发时的行为。

    2024年02月04日
    浏览(50)
  • vue实现鼠标拖拽div左右移动的功能

    直接代码: 这部分区域可以鼠标拖拽左右滚动

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包