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

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

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

浏览器没有关闭事件,只有在关闭时会调用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

相关文章

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动