当前位置: 首页 > 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.lryc.cn/news/578729.html

相关文章:

  • Wisdom SSH 与宝塔面板:深度对比剖析
  • wrap+aria2c提高下载速度
  • 【仿muduo库实现并发服务器】LoopThreadPool模块
  • C# WPF + Helix Toolkit 实战:用两种方式打造“六面异色立方体”
  • 锂离子电池均衡拓扑综述
  • Bootstrap 安装使用教程
  • tree 命令集成到 Git Bash:可视化目录结构的指南
  • Cereal中支持QString、QVector、QList、QMap
  • web开发,旅游景点管理系统推荐算法版本demo,基于asp.net,mvc,c#,sql server
  • 每日八股文7.1
  • Claude Code 全面指南:从安装到高效开发的实用教程
  • React安装使用教程
  • 「Java流程控制」do……while循环结构
  • 吸烟行为检测数据集介绍-2,108张图片 公共场所禁烟监控 健康行为研究
  • 【Java编程动手学】Java的“三体”世界:JVM、JRE、JDK的共生之道
  • CppCon 2018 学习:EMULATING THE NINTENDO 3DS
  • 手工部署与自动化部署场景模拟及参考项目
  • InnoDB索引
  • 胖喵安初 (azi) Android 应用初始化库 (类似 Termux)
  • android车载开发之HVAC
  • Redis-渐进式遍历
  • 算法-每日一题(DAY12)最长和谐子序列
  • 使用D435i运行ORB-SLAM3时,纯视觉模式与视觉-惯性模式的位姿矩阵定义问题探讨
  • CentOS系统新手指导手册
  • 半导体和PN结
  • JavaEE线程概念
  • 人工智能在人力资源领域的深度变革:从技术适配到价值重构
  • AngularJS 安装使用教程
  • 转录组分析流程(七):GSEA分析
  • CertiK《Hack3d:2025年第二季度及上半年Web3.0安全报告》(附报告全文链接)