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

gateway白名单存储nacos,改成存储数据库

前言

很久没写博客了,csdn都开始ai润色了,之前都是看相应框架的源码看了个遍,感觉底层原理都差不多,这阵子着手改造了下gateway中的白名单,之前白名单存储到nacos,要改成存到数据库。里面涉及到浅浅的源码原理,由于之前看过Spring源码,整个流程几分钟就debug完了,体会到了看源码的好处了,也就是后置处理器的选择上。也记录一下。

需求

公司的nacos部署在公网,被恶意攻击了,白名单配置信息放到nacos上不安全,所以要改造一下gateway

改造原理

项目基于sa-token进行认证,找到nacos上的白名单key:security.ignore.whites 去代码上全局搜一下,很容易找到gateway中的认证核心逻辑代码位置,定位到在SaReactorFilter里面会对path进行认证,改成读取db缓存中的白名单即可,由于项目中RedisTemplate的key序列化器没用字符串序列化器,我这临时替换还原了一下。
在这里插入图片描述

难点

项目中用到了:数据库sql自动升级任务。是基于@PostConstruct实现的,且没有指定bean order顺序。不好改别人的代码,指定order顺序顺序执行bean方法的方案pass
在这里插入图片描述

我这边的sql脚本在项目启动的时候会被自动创建
在这里插入图片描述
表创建好了,db数据也有了,项目启动的时候还要干一件事,就是把db中的数据丢到缓存里面,这里涉及到一个bean的加载顺序。加载db的数据到缓存,要在sql升级任务后执行

开始debug源码

之前看过@PostConstruct的执行时间,但是有点忘记了,直接在@PostConstruct方法里面打个断点,看一下执行的栈帧
在这里插入图片描述
定位到是在applyBeanPostProcessorsBeforeInitialization这个前置处理器处理的@PostConstruct,然后发现还有个applyBeanPostProcessorsAfterInitialization在@PostConstruct后执行
在这里插入图片描述
发现直接用的顶层后置处理器BeanPostProcessor
在这里插入图片描述
当时有点纠结要用哪个后置处理器,去实现这个需求,对照名字看了一圈没找到合适的

在这里插入图片描述
最后基于最原始的BeanPostProcessor实现一下就好了
在这里插入图片描述

http://www.dtcms.com/a/263927.html

相关文章:

  • leetcode124-二叉树中的最大路径和
  • CPU缓存一致性
  • AI智能体在用户行为数据分析中有哪些应用?
  • 具身多模态大模型在感知与交互方面的综述
  • (十一)Spring WebSocket
  • Ansys Speos | Speos Camera 传感器机器视觉示例
  • vue-35(使用 Jest 和 Vue Test Utils 设置测试环境)
  • 列表元素滚动动画
  • LAN8720 寄存器概览和STM32 HAL库读写测试
  • CSS 安装使用教程
  • FreeRTOS任务切换
  • 力扣网C语言编程题:寻找两个正序数组的中位数
  • RIP 技术深度解析
  • 文心一言开源版测评:能力、易用性与价值的全面解析
  • [创业之路-457]:企业经营层 - 蓝海战略 - 价值创新不仅仅是技术创新
  • Java项目:基于SSM框架实现的智慧养老平台管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 大麦基于HarmonyOS星盾安全架构,打造全链路安全抢票方案
  • 【机器学习深度学习】模型微调的基本概念与流程
  • 06会话管理
  • 前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
  • 量化选股策略 聚宽
  • 如何利用Charles中文版抓包工具提升API调试与网络性能
  • 二刷 苍穹外卖day10(含bug修改)
  • 如何使用StartUML绘制类图,用例图,时序图入门
  • 转录组分析流程(二):差异分析
  • MySQL MVCC 详解
  • ChatGPT使用限额记录与插件统计
  • 杭州来未来科技 Java 实习面经
  • [C#] WPF - 自定义样式(Slider篇)
  • 【Hive SQL优化完全指南:从0.x到4.x的性能进化之路】