JEECG BOOT 下拉搜索 报 Sign签名校验失败!

SignAuthIntercepto 类
        //2.校验签名
        boolean isSigned = SignUtil.verifySign(allParams,headerSign);

//修改前

 /**
     * @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);
        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);
        byte[] bytes = StrUtil.bytes((paramsJsonStr + signatureSecret), "UTF-8");
        return DigestUtils.md5DigestAsHex(bytes).toUpperCase();
    }



### JeecgBoot 中表单数据校验的方法和实现 在 JeecgBoot 框架中,为了确保输入的数据符合预期的标准,在多个层面实现了表单数据的校验机制。 #### 后端校验逻辑 对于后端部分,当涉及到复杂业务逻辑或数据库操作时,通常会在服务层进行严格的参数验证。特别是针对自定义业务需求,可以通过扩展接口来增强系统的灵活性与健壮性[^2]: ```java // 假设有一个用户注册功能需要额外增加手机号码格式检查 public interface IUserService extends IService<User> { boolean checkPhoneFormat(String phone); } @Service public class UserServiceImpl implements IUserService { @Override public boolean checkPhoneFormat(String phone) { String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(phone); return m.matches(); } } ``` 如果是在处理在线表单生成器中的数据,则需要注意特定模块下的 `MyIOnlCgformSqlServiceImpl` 类里是否有相应的 `checkData()` 方法被正确覆盖并实现必要的检验规则。 #### 前端校验逻辑 而在前端方面,JeecgBoot 使用了 Ant Design Vue 这样的 UI 库来进行界面构建,并通过内置的形式化工具完成即时反馈式的客户端侧验证工作[^3]。下面展示了一个简单的例子说明如何设置字段级别的约束条件: ```javascript const rules = reactive({ name: [ { required: true, message: '请输入名称', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], code: [{ validator: uniqueCodeValidator, trigger: 'change' }] }) function uniqueCodeValidator(rule, value, callback){ if (!value || !/^\w+$/.test(value)) { return callback(new Error('编码只能包含字母、数字')) } else { // 调用API查询该code是否存在重复项 api.checkUnique({ field:'code', value }).then(res => { res ? callback() : callback(new Error('此编码已存在')); }) } } ``` 上述代码片段展示了两个不同类型的校验方式:一个是基于字符串长度的基础校验;另一个则是异步调用服务器端 API 来确认某个唯一性的属性(比如编码)是否已经被占用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值