文章目录
JeecgBoot开发问题记录
一、JeecgBoot下拉搜索多选失败:报Sign签名校验失败
1.报错信息:
传递中文时,解码前后不一致导致验证失败
[http-nio-8080-exec-9] ERROR o.j.config.sign.interceptor.SignAuthInterceptor:62 - request URI = /jeecg-boot/sys/dict/getDictItems/report_factory,factory,factory,%20report%20%3D%20'%E4%BA%A7%E9%94%80%E5%AD%98'
[http-nio-8080-exec-9] ERROR o.j.config.sign.interceptor.SignAuthInterceptor:63 - Sign 签名校验失败!Header Sign : D84990622B0106819CB55D43238A10D6
2.修改内容:
-
1.修改Java文件目录:
jeecg-boot\jeecg-boot-base\jeecg-boot-base-core\src\main\java\org\jeecg\config\sign\util\SignUtil.java
-
2.修改getParamsSign类:
-
修改前:
/**
* @param params
* 所有的请求参数都会在这里进行排序加密
* @return 得到签名
*/
public static String getParamsSign(SortedMap<String, String> params) {
//去掉 Url 里的时间戳
params.remove("_t");
String paramsJsonStr = JSONObject.toJSONString(params);
log.info("Param paramsJsonStr : {}", paramsJsonStr);
StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
String signatureSecret = staticConfig.getSignatureSecret();
if(oConvertUtils.isEmpty(signatureSecret) || signatureSecret.contains("${")){
throw new JeecgBootException("签名密钥 ${jeecg.signatureSecret} 缺少配置 !!");
}
//修改前
return DigestUtils.md5DigestAsHex