网安要求关闭所有系统标签页后,自动去除登录人信息(包括直接关闭整个浏览器)

本文主要是介绍网安要求关闭所有系统标签页后,自动去除登录人信息(包括直接关闭整个浏览器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

暂时没找到什么优美得解决办法,如遇到,请留言,谢谢

浏览器没有关闭事件,只有在关闭时会调用beforeunload,unload,但是再刷新时会调用beforeunload,unload,onload
因此关闭再打开与刷新区别在于再次打开的时间差

丑陋的解决办法:利用时间差

前提 token是保存在localstorage中
1.登录接口中添加本地存储参数

localStorage.setItem('pageInstanceNum', 1)

2.页面添加监听,此处时间差设置的时10秒,一般看接口请求最长时间

window.onload = function (e) {
if(localStorage.getItem('tokenName')) {let num = localStorage.getItem('pageInstanceNum') || 0if (num) {num = Number(num)}num = num + 1localStorage.setItem('pageInstanceNum', num)const gapTime = localStorage.getItem('closetime'); //获取关闭事件const openTime = new Date().getTime() - gapTime;localStorage.setItem('openTime', openTime)if (num == 1 && openTime > 10000) {localStorage.removeItem('tokenName')}}}
window.onbeforeunload = function (e) {if(localStorage.getItem('tokenName')) {localStorage.setItem('closetime', new Date().getTime()); //关闭let num = localStorage.getItem('pageInstanceNum') || 0if (num) {num = Number(num)}if(sessionStorage.getItem("sessionPageInstanceNum")){num = num - 1localStorage.setItem('pageInstanceNum', num)}}
}

3.需要在登录时,添加一个session的参数,我是在app.vue中添加

//update生命周期
updated() {if(isLogin && !sessionStorage.getItem("sessionPageInstanceNum")){//isLogin 判断是否已经登录的参数sessionStorage.setItem("sessionPageInstanceNum",1)}}

4.在logout登出函数中去除session的参数

sessionStorage.removeItem("sessionPageInstanceNum")

这篇关于网安要求关闭所有系统标签页后,自动去除登录人信息(包括直接关闭整个浏览器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061462

相关文章

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4