- TASK: 登录请求 DTO 与参数校验 / Login request DTO and validation
- 父 issue:
#5 - 对应实现文件:
iam-auth-service/src/main/java/com/auth/auth/dto/PasswordLoginRequest.java
- 目标对齐:
- 已补充密码登录请求 DTO 的字段约束
- 已明确设备信息
deviceInfo的结构 - 已将基础参数校验下沉到 Bean Validation
- 范围对齐:
- 本次覆盖
tenantCode、appCode、loginName、password、captchaToken、captchaCode、deviceInfo - 本次覆盖
deviceId、deviceType、userAgent - 本次不包含租户查询、应用查询、账号状态校验、密码比对、token 生成
- 本次覆盖
- 输入输出对齐:
- 输入:
POST /api/iam/auth/login/password的请求体 - 输出:非法参数进入统一参数异常返回链路
- 输入:
- Acceptance 对齐:
- “登录请求对象结构稳定”:已通过 DTO 字段收敛和长度/格式约束落实
- “参数缺失和非法值能统一返回”:当前依赖
@Valid+ 全局异常处理链路承接
- 合法
tenantCode/appCode可通过格式校验 - 合法
loginName/password可通过非空与长度校验 - 合法
deviceInfo.deviceType可通过非空与格式校验 - 可选字段
captchaToken、captchaCode、deviceId、userAgent在长度合法时允许为空或缺省
tenantCode为空时应命中必填校验appCode为空时应命中必填校验loginName为空时应命中必填校验password为空时应命中必填校验deviceInfo缺失时应命中必填校验deviceInfo.deviceType为空时应命中必填校验tenantCode/appCode含非法字符时应命中格式校验deviceType含非法字符时应命中格式校验- 各字段长度超过上限时应命中长度校验
tenantCode/appCode支持单字符合法值tenantCode/appCode支持下划线和中划线loginName/password上限 128 字符captchaCode上限 16 字符userAgent上限 512 字符
- 不影响现有控制器方法签名:
AuthController.loginByPassword(@Valid @RequestBody PasswordLoginRequest request)
- 不影响现有统一异常处理入口:
MethodArgumentNotValidExceptionBindExceptionHttpMessageNotReadableException
- 不影响当前 mock 登录分支逻辑:
lockedexpiredbad-password
- 不影响已完成的编译链路:
mvnw.cmd -pl iam-auth-service -am compile已通过
- 这个 TASK 当前已经完成了“DTO 结构收敛”和“参数校验规则落地”两部分
- “统一返回”这一点当前是通过已有全局异常处理链路承接,不是本次单独新增
- 若要把该 TASK 验证做得更完整,下一步建议补接口级测试用例,覆盖缺参、非法字符、超长值三类场景