当前位置: 首页 > news >正文

修改密码模块中对轮询接口响应用户失效问题的处理

项目开发中,修改成功密码后,会弹框提示用户重新登陆,然后用户点击确定后,前端请求登出接口,清空本地存储,跳转登录页面。
与此同时,项目中有个轮询接口,在超时或者用户密码修改成功,原token失效的情况下,会返回302状态码,跳转登录页面。
那么如何保证修改密码成功后,不会因为轮询接口返回302重定向登录页面,导致密码修改成功后的逻辑没有来得及执行下去。
我们可以在修改密码成功后,在本地存储一个key,当有这个key存储的时候,不去请求轮询接口。然后在密码修改成功后的逻辑都顺利执行完的时候,删除这个本地存储的key。

但是这个主项目还引入了其他子项目,其他子项目也有轮询接口,如果每增加一个子项目,我们都像这个主项目的框架一样,去根据本地存储key判断是否轮询,来避免因为修改密码后用户token失效提前跳转登录页面,那么拓展性就很差。

我们的设计是:
将返回302状态码的跳转登录地址存储在contextpath字段中,而不是location字段中。
这样就使得浏览器无法实现自动重定向,因为浏览器是去取location字段进行跳转的,如果location字段缺失,那么浏览器是无法自行实现重定向的。
我们只能在前端的响应拦截器里去手动实现重定向,也就是手动从响应头中获取contextpath字段的重定向地址,调用window.location.href进行重定向。
我们将重定向的能力交予主项目框架,其他子项目没有重定向的能力。
子项目不对302做特殊处理,那么子项目即便轮询接口报错302,也不会进行重定向。
而主项目框架,对302进行手动重定向,保证了超时的时候会重新登录,又结合了本地存储的key,保证了修改密码后,不去请求轮询接口,不让轮询接口302重定向影响到修改密码成功后前端逻辑的执行。

这样一来,子项目拓展性良好,也保证了超时重新登录的处理和修改密码模块的顺利执行。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android13 Hotseat客制化--Hotseat修改布局、支持滑动、去掉开机弹动效果、禁止创建文件夹
  • GitHub图床
  • pytorch pyro 贝叶斯神经网络 bnn beyesean neure network svi ​定制SVI目标和培训循环,变更推理
  • 经验笔记:前端堆栈分配
  • 批量下载,控制并发(利用promise 做需求池队列)
  • 如何理解基于架构的软件设计(ABSD)
  • TMS320F28335芯片及使用介绍
  • 不到200行代码,一键写出简单贪吃蛇网页游戏!附详细代码!快来看看吧!
  • QML学习二:Qt启用qml文件实时预览编辑,以及打印日志到控制台
  • 【开源大模型生态5】解放大脑
  • 1034. 边界着色(JAVA)
  • SpringCloud之CircuitBreaker
  • 面试场景题
  • 使用 uni-app 开发微信小程序:深入教程与技巧
  • SpringCloud:Gateway
  • AWS实战 - 利用IAM对S3做访问控制
  • java多线程
  • mysql 5.6 原生Online DDL解析
  • NSTimer学习笔记
  • Python socket服务器端、客户端传送信息
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Unix命令
  • 关于springcloud Gateway中的限流
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 蓝海存储开关机注意事项总结
  • 聊聊hikari连接池的leakDetectionThreshold
  • 普通函数和构造函数的区别
  • 使用 @font-face
  • 世界上最简单的无等待算法(getAndIncrement)
  • 微信公众号开发小记——5.python微信红包
  • 用Canvas画一棵二叉树
  • 栈实现走出迷宫(C++)
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (12)Linux 常见的三种进程状态
  • (3)STL算法之搜索
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四) 虚拟摄像头vivi体验
  • (转)Unity3DUnity3D在android下调试
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core docker部署教程和细节问题
  • .NET Core跨平台微服务学习资源
  • .NET Micro Framework 4.2 beta 源码探析
  • .Net OpenCVSharp生成灰度图和二值图
  • .net 怎么循环得到数组里的值_关于js数组