网关
网关运行分析报告
网关运行分析报告 - 2025-02-15
网关运行分析报告 - 2025-02-22
网关运行分析报告 - 2025-02-28
1.shenyu网关内外网使用
2.shenyu网关的具体使用
记一次网关线上问题之icsp访问ERP
再次思考多套ak/sk同时访问同一资源路径问题
网关接入说明
网关接入说明补充
网关分配各系统命名
网关BUG及二开
网关管理端访问地址
修改requestBody与responseBody
shenyu工程理解
获取requestBody异步问题
shenyu工程部署
排查sign插件报错500问题
shenyu数据结构设计
shenyu网关请求过程
shenyu自定义插件
记一次网关线上问题----网关无法对外提供服务
网关插件更新报错问题
网关中grayTag的使用
Exceeded limit on max bytes to buffer : 262144
网关中Divide插件中Selector中Handler中配置丢失问题
网关请求下游系统时长记录
通用测试:获取网关的sign值
网关分发主数据设想方案
铁骑主数据分发机制完善
27.GTMS&ITMS与gateway的关系
28.ZPI与gateway的关系
26.网关验签场景
29.PC端空值,服务端正常请求
30.网关requestMaxSize值
31.跨系统跨语言日志链路追踪
32.网关异步分发讨论
33.网关LoggingConsole丢失日志排查
34.网关升级shenyu-admin
35.网关异步分发插件 - 接入文档
本文档使用「觅思文档专业版」发布
-
+
首页
网关插件更新报错问题
## 1.问题现象 admnin版本:2.5.0。网关的管理端一直存在一个问题:添加资源路径的时候报错。如下图  点击sure按钮之后报错如下  f12查看下发送参数,后续分析有用  ## 2.解决思路 方案1:咨询官网,官网建议升级成2.6.0版本,由于我们的bootstrap端是2.5.1版本,查看网关升级文档,这是一个很大版本的升级,加上我们在2.5.1版本上开发了自己的插件,评估升级到2.6.0不确定因素的风险很大。 方案2:下载admin的2.5.0版本源码,改掉这个bug。  启动工程  登录到管理端  测试验证  可以复现问题  查看源码   再查看前端的发送参数  到这里凉了一截!server端的校验不能动,id必须有值,那就只有改前端了。发现前端是打包好的代码,无法改!至此,只有回到之前的方案了,只能升级版本! 方案3:升级shenyu版本(包括admin与bootstrap) 此时,发现官网上2.5.0版本与2.6.0之间有个2.5.1的版本,而我们bootstrap端的版本本身就是2.5.1,那是不是可以直接升级admin端版本呢?!查看下官网的升级公告:发现admin的2.5.1版本已经解决了如上问题,同时升级的需要的SQL,我们已经支持了,即不需要打SQL的情况下便可升级admin。直接下载安装包操作一把。直接成功了! ## 3.总结 2.5.0报错的根本原因是参数校验, 前端请求参数如下 ``` { "extInfo": null, "authParamDTOList": [ { "appName": "test", "appParam": null } ], "authPathDTOList": [ { "id": "1731879503573417984", "appName": "test", "path": "/test/**", "enabled": true }, { "path": "/demo/**" } ], "id": "1731879503556640768", "appKey": "307194BC122E4E25A9AE20DAB5B01214", "appSecret": "651EA0531E2D4908A2F91B04EC19591E", "userId": "test", "phone": "13258317626", "open": true, "enabled": true } ``` 我们对比下AppAuthDTO类 ``` /** * this is application authority from by web front. */ public class AppAuthDTO implements Serializable { private static final long serialVersionUID = 3906547569699874743L; /** * primary key. */ @NotBlank(message = "app auth id not null") @Existed(message = "app auth is not existed", provider = AppAuthMapper.class) private String id; /** * application key. */ @NotBlank(message = "app auth appKey not null") private String appKey; /** * encryption secret. */ @NotBlank(message = "app auth appSecret not null") private String appSecret; private String userId; @Pattern(regexp = "\\+?\\d{7,11}", message = "number is illegal, length 7 to 11! e.g. +1234567 or 1234567") private String phone; private String extInfo; /** * whether open authPath. */ private Boolean open; /** * whether enabled. */ private Boolean enabled; @Valid private List<AuthParamDTO> authParamDTOList; @Valid private List<AuthPathDTO> authPathDTOList; } ``` 我们发现AppAuthDTO类中的id、appKey、appSecret均加了@NotBlank注解;phone添加了@Pattern注解;authParamDTOList、authPathDTOList添加了@Valid注解 再比对转进来的参数,最终发现authPathDTOList中的AuthPathDTO类中的enabled加上了@NotNull注解,导致本次请求校验失败!通过查看源码,我学会了这种方式对请求参数进行校验!
李贤利
2023年12月5日 12:45
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期