《JeecgBoot系列》JeecgBoot下拉搜索多选失败:报Sign签名校验失败

JeecgBoot下拉搜索多选失败:报Sign签名校验失败

一、报错信息:

传递中文时,解码前后不一致导致验证失败

[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

二、修改内容:

  • 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((paramsJsonStr + signatureSecret).getBytes()).toUpperCase();
    }
  • 修改后
/**
     * @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} 缺少配置 !!");
        }
        //修改后
        byte[] bytes = StrUtil.bytes((paramsJsonStr + signatureSecret), "UTF-8");
        return DigestUtils.md5DigestAsHex(bytes).toUpperCase();
    }

你可能感兴趣的:(JeecgBoot,jeecgboot)