Skip to content

校验体系 ​

7 个校验示例构成一条从前端到服务端的防线谱系:格式 → 跨字段 → 联动 → 唯一性与脱敏 → 子表 → 提交前脚本 → 服务端扩展点。核心思想一句话:前端拦得快,服务端拦得住——绕过前端直接调接口,同一份规则在服务端再拦一次。

功能在哪 ​

  • 菜单路径:基础设施 → 在线示例 → 「校验示例1–7」
  • 通用玩法:每个示例都内置合法样本 + 脏数据两类演示行——编辑脏数据行再提交,看校验如何拦;或新增时故意填错

校验示例1-格式校验大全 ​

内置正则库 18 项全覆盖,外加自定义正则、多规则叠加、自定义提示、空值不校验格式。

格式校验新增表单

  • 表单顶部提示即本示例玩法:「每个字段配的都是『格式校验』规则。故意填错再提交,前端会立刻拦住;用接口绕过前端提交,服务端会用同一份正则再拦一次。」
  • 分组浏览:样本信息 → 一、联系方式类(手机号 / 固定电话 / 邮箱 / 备用邮箱演示空值放过)→ 二、证件与账号类(身份证只校验格式、校验码见示例7)……
  • 要点:格式校验只管「像不像」,不管「真不真」;真实性校验在示例7。

校验示例2-必填与跨字段 ​

七条跨字段约束:恒真断言、字段间比较、BETWEEN、IN、开关触发、二选一镜像、金额勾稽、AND 套 OR 嵌套。

  • 操作:编辑「脏数据」行提交,逐条看报错指向的字段对;
  • 要点:跨字段规则在服务端同样执行——只改前端绕过不了金额勾稽。

校验示例3-联动动态校验 ​

联动的十种动作全覆盖;含「配了 otherwise / 没配 otherwise」的 A/B 对照组;规则挂到 SUBMIT 时机,服务端会丢弃不可写字段的值、拦住必填空值。

  • 看什么:切换触发字段观察显隐 / 只读 / 必填 / 赋值等动作;对照两组 otherwise 的差异;
  • 要点:SUBMIT 时机规则是服务端兜底——前端把字段藏了,服务端仍按规则校验或丢弃。

校验示例4-唯一性长度与脱敏 ​

字段唯一性(叠加数据库唯一索引)、值长度守卫、五种脱敏策略;刻意不开逻辑删除——它与唯一索引天然冲突。

  • 操作:新增一条与现有行同编码的记录看唯一性报错;看列表里脱敏列的掩码与「查看明文」权限位;
  • 要点:唯一性校验查的是未删除行;逻辑删除会让「删了又建」撞唯一索引,故本示例物理删除。

校验示例5-子表明细校验 ​

子表行数区间、行内必填、行内格式、行号合并报错;行公式与主表聚合公式由服务端权威重算,跨字段勾稽判的是重算后的合计。

  • 操作:明细删到下限以下 / 加到上限以上提交看行数区间报错;改单价看小计前端预览与服务端重算一致;
  • 要点:前端公式只是预览;篡改前端值提交,服务端重算后勾稽照拦。

校验示例6-提交前脚本 ​

前端脚本四钩子全覆盖:默认值、即时提示、提交前组合校验与二次确认、超时阻断;并演示「内核必填先于 beforeSubmit」这条坑。

  • 操作:新增观察默认值钩子;填触发值看即时提示;提交看二次确认弹窗;
  • 要点:beforeSubmit 跑在内核必填之后——必填没过的字段进不了你的脚本,顺序别搞反。

校验示例7-服务端扩展点 ​

服务端扩展点:身份证校验码(正则做不到)、查库查重、工号生成、已转正后禁改入职日期、禁删;错误用 addError 汇总一次性返回。

  • 操作:填一个格式对但校验码错的身份证看服务端报错;对已转正员工改入职日期看禁改;尝试删除受保护行看禁删;
  • 要点:扩展点是「正则表达不了的业务真值」的唯一正确位置;多个错误一次返回、前端逐字段标红。

两个探针页 ​

  • 全控件验证表单:全控件 + 校验组合的内部回归验证页,当前为空态;
  • 查看明文验证:脱敏字段明文查看的内部验证页(配合示例4 的明文权限),当前为空态。

探针页为空态属预期

两页是开发期回归入口,菜单在、页面空。阅读以七个校验示例为准。

视角对照 ​

视角差异
租户管理员全部校验示例;明文查看等敏感操作按权限位开放(截图视角)
无明文权限角色脱敏列只见掩码、无「查看明文」入口

进阶 ​

  1. 七层防线的分工:格式(像不像)→ 跨字段(关系对不对)→ 联动(状态合不合法)→ 唯一性(库里有没有)→ 子表(明细规不规整)→ 脚本(交互级组合判断)→ 扩展点(业务真值)。能放前一层就别放后一层,放不了就坚决放后一层。
  2. 服务端永远再拦一次:除脚本钩子中的纯交互部分(二次确认等),其余规则服务端同份执行;写接口调用方不要指望前端校验是唯一关口。
  3. 报错体验:addError 汇总返回 → 前端逐字段标红 + 顶部汇总;行号合并报错让子表错误一眼定位到行。
  4. 脱敏与明文:掩码是展示层行为,库里存原值;明文查看走权限位并留审计,别用导出绕(导出值模式见导入导出)。

常见问题 ​

前端没拦但提交失败了? SUBMIT 时机规则与服务端重算在提交后才跑——前端放过的(如隐藏字段、篡改值)服务端照拦,属设计而非故障。

为什么必填字段在我的 beforeSubmit 里拿不到? 内核必填先于 beforeSubmit(示例6 演示的坑):必填未过根本进不了脚本。

唯一性报错但库里查不到同值? 查的是未删除行且含其他租户隔离范围;若开了逻辑删除还会撞唯一索引——示例4 解释了为何刻意物理删除。

格式校验放了空值? 空值不校验格式是默认语义;必填另配必填规则,两者独立。

身份证格式对仍报错? 示例7 的校验码校验在服务端:格式对但校验码错仍拦,这是「真不真」与「像不像」的区别。

相关页面 ​