后台管理系统用户退出登录方案实现
退出登录一直是一个通用的前端实现方案,对于退出登录而言,它的触发时机一般有两种:
1. 用户主动退出,即用户点击登录按钮之后退出;
2. 用户被动退出,Token过期或被 其他人"顶下来" 时退出;
那么无论是什么退出方式,在用户退出时,所需要执行的操作都是固定的:
1. 清理掉当前用户缓存数据;
2. 清理掉权限相关配置;
3. 返回到登录页;
1.用户主动退出策略
1. 在状态管理中添加action

2. 添加退出登录事件

2. 用户被动退出策略
用户被动退出的情况一般是指token过期或者系统需要满足单点登录,相应的可以分为前端主动处理和前端被动处理两种方式。
2.1. 被动退出前端主动处理
想要搞明白 主动处理 方案,那么首先我们得先去搞明白对应的背景以及业务逻辑 。
那么首先我们先明确一下对应的背景:
我们知道 token 表示了一个用户的身份令牌,对 服务端 而言,它是只认令牌不认人的。所以说一旦其他人获取到了你的 token ,那么就可以伪装成你,来获取对应的敏感数据。
所以为了保证用户的信息安全,那么对于 token 而言就被制定了很多的安全策略,比如:
1.动态 token(可变 token)
2.刷新 token
3. 时效 token
…
这些方案各有利弊,没有绝对的完美的策略,而一般所选择的方案就是时效 token。
对于 token 本身是拥有时效的,这个大家都知道。但是通常情况下,这个时效都是在服务端进行处理,而此时我们要在 服务端处理 token 时效的同时,在前端主动介入 token 时效的处理中,从而保证用户信息的更加安全性。
那么对应到我们代码中的实现方案为:
1. 在用户登陆时,记录当前 登录时间;
2. 制定一个 失效时长;
3. 在接口调用时,根据当前时间对比登录时间 ,看是否超过了时效时长;
(1). 如果未超过,则正常进行后续操作
(2). 如果超过,则进行退出登录操作
那么明确好了对应的方案之后,接下来我们就去实现对应代码。
创建 utils/auth.js 文件,并写入以下代码:

以下是在stotage中的代码:

以下是在constant 中声明对应常量:

在用户登录成功之后去设置时间,到 store/user.js 的 login 中:

在 utils/request 对应的请求拦截器中进行主动介入:

2.2. 被动退出前端被动处理
首先我们需要先明确被动处理需要应对两种业务场景:
我们一个一个看,首先是Token过期:
我们知道对于 token 而言,本身就是具备时效的,这个是在服务端生成 token 时就已经确定的。
而此时我们所谓的 token 过期指的就是:
服务端生成的 token 超过 服务端指定时效 的过程。
而对于单点登录而言,指的是:
当用户 A 登录之后,token 过期之前。
用户 A 的账号在其他的设备中进行了二次登录,导致第一次登录的 A 账号被 “顶下来” 的过程。
即:同一账户仅可以在一个设备中保持在线状态
那么明确好了对应的背景之后,接下来我们来看对应的业务处理场景:
从背景中我们知道,以上的两种情况,都是在服务端进行判断的,而对于前端而言其实是服务端通知前端的一个过程。
所以说对于其业务处理,将遵循以下逻辑:
1. 服务端返回数据时,会通过特定的状态码通知前端;
2. 当前端接收到特定状态码时,表示遇到了特定状态:token 时效 或 单点登录;
3. 此时进行退出登录处理;
那么明确好了业务之后,接下来我们来实现对应代码:
在 utils/request 的响应拦截器中,增加以下逻辑:

对于单点登录而言,需要配合websockt通信,让后端主动推送消息给前端,前端收到该通知后主动退出,其原理是一样的,此处不再赘述。
相关文章:
后台管理系统用户退出登录方案实现
退出登录一直是一个通用的前端实现方案,对于退出登录而言,它的触发时机一般有两种: 1. 用户主动退出,即用户点击登录按钮之后退出; 2. 用户被动退出,Token过期或被 其他人"顶下来" 时退出&…...
C# 对象和类型(结构)
❝ 类和结构的区别 字段、属性和方法 按值和引用传送参数 方法重载 构造函数和静态构造函数 只读字段 Object类,其他类型都从该类派生而来 结构 如何将类保持在堆中,通过这种方式可以在数据的生存期上获得很大的灵活性,但性能会有一定的损失。…...
利用AI优化SEO关键词提升网站排名的策略与技巧
内容概要 随着数字化时代的发展,网站的可见性和流量成为了各个行业品牌获取客户的关键。特别是在竞争激烈的市场中,如何有效地提升网站排名成为了站长和营销人员的关注重点。利用AI技术优化SEO关键词无疑是一种行之有效的方法,通过分析和处理…...
“多维像素”多模态雷视融合技术构建自动驾驶超级感知能力|上海昱感微电子创始人蒋宏GADS演讲预告
2025年1月14日,第四届全球自动驾驶峰会将在北京中关村国家自主创新示范区展示交易中心-会议中心举行。经过三年的发展,全球自动驾驶峰会已经成长为国内自动驾驶领域最具影响力、规模最大的产业峰会之一。在主会场下午的城市NOA专题论坛上,上海…...
基于机器学习的故障诊断(入门向)
一、原始信号的特征提取 1.EMD经验模态分解的作用 信号分析:EMD可以将信号分解为多个IMFs,每个IMF代表信号中的一个特定频率和幅度调制的成分。这使得EMD能够提供对信号的时频特征进行分析的能力(特征提取用到的)。信号去噪&…...
【延伸学习】智能软开关优化配置对比算例【sop】
目录 1 主要内容 算例模型 目标函数 2 部分程序 3 程序结果 3.1 sop选址定容优化模型 3.2 对比算例(不含sop) 3.3 对比算例(含光伏选址) 4 下载链接 1 主要内容 之前分享了《基于改进灵敏度分析的有源配电网智能软开关优…...
pytest 参数介绍
命令行参数描述常见使用案例-v / --verbose显示每个测试用例的详细信息,包括测试名称和状态pytest -v-s / --captureno禁用输出捕获,允许 print() 输出显示pytest -s-q / --quiet安静模式,减少输出,仅显示每个测试的通过/失败结果…...
源代码编译安装X11及相关库、vim,配置vim(1)
一、目录结构 如下。 所有X11及相关库装到mybuild,源代码下载到src下,解压,进入,编译安装。编译时指定--prefix到相同的目录,即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…...
Node.js JXcore 打包教程
Node.js JXcore 打包教程 介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许开发者使用 JavaScript 编写服务器端和网络应用程序。JXcore 是一个流行的 Node.js 发行版,它支持将 Node.js 应用程序打包成单一的可执行文件,使得部署和分发变得更加容易…...
windows 下基于docker 部署 guacamole
背景 Apache Guacamole 是一种无客户端或插件的远程桌面网关。它支持多个标准协议,如 VNC、RDP 和 SSH等。记录下部署过程。 步骤 1, 安装docker desktop choco install docker-desktop -y 注: 若windows 11还未安装wsl,则需要…...
『SQLite』子查询可以这样用
摘要:本节主要讲子查询的使用,可以在查询、更新、修改、删除等操作中使用。 什么是子查询? 子查询是一种在 SELECT-SQL 语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,称之为子查询(Sub Query&#…...
夯实前端基础之HTML篇
知识点概览 HTML部分 1. DOM和BOM有什么区别? DOM(Document Object Model) 当网页被加载时,浏览器会创建页面的对象文档模型,HTML DOM 模型被结构化为对象树 用途: 主要用于网页内容的动态修改和交互&…...
VVenC 编码器源码结构与接口函数介绍
VVenC VVenC(Fraunhofer Versatile Video Encoder)是由德国弗劳恩霍夫海因里希研究所(Fraunhofer Heinrich Hertz Institute, HHI)开发的一个开源的高效视频编码器。它实现了最新的视频编码标准——Versatile Video Coding (VVC)…...
【C++习题】20. 两个数组的交集
题目:349. 两个数组的交集 - 力扣(LeetCode) 链接🔗:349. 两个数组的交集 - 力扣(LeetCode) 题目: 代码: class Solution { public:// 函数功能:求两个数组…...
小R的蛋糕分享
小R的蛋糕分享 问题描述 小R手里有一个大小为 n 行 m 列的矩形蛋糕,每个小正方形区域都有一个代表美味度的整数。小R打算切割出一个正方形的小蛋糕给自己,而剩下的部分将给小S。她希望两人吃的部分的美味度之和尽量接近。 我们定义小R吃到的部分的美味度…...
基于Arduino的FPV头部追踪相机系统
构建FPV头部追踪相机:让你置身于遥控车辆之中! 在遥控车辆和模型飞行器的世界中,第一人称视角(FPV)体验一直是爱好者们追求的目标。通过FPV头部追踪相机,你可以像坐在车辆或飞行器内部一样,自由…...
使用 PyTorch 自定义数据集并划分训练、验证与测试集
使用 PyTorch 自定义数据集并划分训练、验证与测试集 在图像分类等任务中,通常需要将原始训练数据进一步划分为训练集和验证集,以便在训练过程中评估模型的性能。下面将详细介绍如何组织数据与注释文件、如何分割训练集和验证集,以及如何基于…...
VSCode 插件
VSCode 插件 1. GitHub Copilot - AI 代码助手 功能:根据上下文提供实时代码补全,支持自然语言转代码,提供符合现代编程规范的建议。进阶技巧: 使用快捷键 Alt ] 切换多个建议。写注释时,描述业务逻辑而不是具体实现…...
Windows使用AutoHotKey解决鼠标键连击现象(解决鼠标连击、单击变双击的故障)
注:罗技鼠标,使用久了之后会出现连击现象,如果刚好过保了,可以考虑使用软件方案解决连击现象: 以下是示例AutoHotKey脚本,实现了调用XButton1用于关闭窗口(以及WinW,XButton2也导向…...
Linux 环境(Ubuntu)部署 Hadoop 环境
前置准备 准备三台机器 cat /etc/hosts 192.168.1.7 hadoop-master 192.168.1.11 hadoop-slave01 192.168.1.12 hadoop-slave02Linux 环境 cat /etc/os-release PRETTY_NAME"Ubuntu 24.10" NAME"Ubuntu" VERSION_ID"24.10" VERSION"24.…...
SEO_为什么你的SEO没效果?关键原因分析
SEO为什么你的SEO没效果?关键原因分析 在互联网时代,SEO(搜索引擎优化)是提升网站在搜索引擎排名的关键手段。不少网站在付出大量努力后,却发现SEO效果不佳,这是一个令人困扰的问题。为什么你的SEO没有效果…...
PHP Tokenizer终极指南:5个企业级代码分析实战案例
PHP Tokenizer终极指南:5个企业级代码分析实战案例 【免费下载链接】tokenizer A small library for converting tokenized PHP source code into XML (and potentially other formats) 项目地址: https://gitcode.com/gh_mirrors/to/tokenizer PHP Tokenize…...
题目整理之线性dp
周赛137_D小苯的序列涂色 #include<bits/stdc.h> #define int long long #define fi first #define se second using namespace std; const int mod1e97; typedef pair<int,int>pii; const int N3e5; int dx[4]{1,-1,0,0}; int dy[4]{0,0,1,-1}; int num[N],inv[N]…...
SEO案例教程有哪些
SEO案例教程有哪些?了解这些将大大提升你的网站排名 在当今的互联网时代,搜索引擎优化(SEO)已经成为每个网站运营者必须掌握的技能。无论你是新手还是有一些经验,了解和学习高质量的SEO案例教程都能帮助你提升网站的排…...
未发表!25年顶级SCI算法SOO优化CNN-LSTM-Attention一键实现多步预测!多步预测全家桶更新啦!
目录 多步预测案例 多步预测教程 创新点与原理 ①创新点一:基于CNN-LSTM的多尺度特征联合提取架构 ②创新点二:融合SE通道注意力机制的自适应特征重标定策略 ③创新点三:基于SOO智能算法的超参数自适应寻优 结果展示 全家桶目录 获取…...
OpenClaw+Docker部署:Kimi-VL-A3B-Thinking多模态环境快速构建
OpenClawDocker部署:Kimi-VL-A3B-Thinking多模态环境快速构建 1. 为什么选择Docker部署OpenClaw 去年我在本地折腾OpenClaw时,被各种依赖冲突和权限问题折磨得够呛。直到尝试用Docker容器化部署,才发现这才是个人开发者快速搭建AI助手环境的…...
ArcGIS Pro新手必看:用‘按掩膜提取’和‘裁剪’工具搞定栅格与矢量数据范围限定(附详细步骤图)
ArcGIS Pro数据范围限定实战:从工具选择到避坑指南 刚接触ArcGIS Pro的研究人员常常会遇到这样的困惑:手头收集了研究区域的各种数据,却不知道如何精确限定到自己的研究范围。面对"裁剪"和"按掩膜提取"两个看似相似的工具…...
ROS2多线程调试避坑指南:用gdb同时监控3个关键线程的交互问题
ROS2多线程调试避坑指南:用gdb同时监控3个关键线程的交互问题 调试ROS2节点时,多线程问题往往是最棘手的挑战之一。上周在调试一个图像处理节点时,我遇到了三个线程相互竞争导致的数据不一致问题——主线程发布消息、回调线程处理数据、定时器…...
郑州除甲醛好用源头厂家
新房装修后,甲醛问题成了无数家庭的“心头大患”。面对市场上琳琅满目的除甲醛产品和服务,消费者往往眼花缭乱,不知如何选择。今天,我们就来深入聊聊,在郑州,如何找到一个靠谱的除甲醛源头厂家,…...
LeetCode Hot Code——合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:输入:intervals [[1,3],[…...
