Files
water/openspec/changes/fix-register-body-validation/design.md
2026-08-14 10:35:42 +08:00

1.3 KiB

Context

AuthController.register 当前依赖 Spring MVC 的 @Validated 自动校验。该校验发生在控制器方法调用之前,所以方法体无法为缺失的 clientId 补默认值。

Goals / Non-Goals

Goals:

  • 空白 clientId 使用固定注册客户端 ID 32324a04c0175c8d61ac8a282553aea1
  • 默认值补充后仍执行 RegisterBody 的全部 Bean Validation 约束。
  • 保持注册开关检查和注册服务调用顺序不变。

Non-Goals:

  • 不调整 RegisterBody 的继承结构或其他登录字段。
  • 不改变登录接口和认证客户端配置。

Decisions

  • 移除注册方法参数上的 @Validated,在方法体开始处补默认 clientId 后调用现有 ValidatorUtils.validate(user)。该工具已被认证控制器和各登录策略使用,异常处理行为与现有认证流程一致。
  • 使用 StringUtils.isBlank,同时覆盖 null、空字符串和纯空白字符串。
  • 通过 AuthController 单元测试观察注册服务收到的请求对象,验证公共接口行为。

Risks / Trade-offs

  • 固定客户端 ID 变更时需要同步修改代码和测试;本次按明确业务值实现。
  • 手动校验依赖控制器方法内调用顺序;测试覆盖默认值补充发生在校验和业务调用之前。