@JsonIgnoreProperties({'password_hash', 'internal_remark'})
public class UserVO { }

用户详情接口返回 42 个字段,前端只用了 6 个,连 password_hash 和 internal_remark 都在响应里。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,接口直接返回 ORM 实体,没有 DTO 裁剪。新增字段自动暴露,脱敏规则也没跟上。

围绕「接口字段裁剪」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。

处理上按这个顺序:定义响应 DTO 只留必要字段;禁止直接序列化实体;加契约测试 字段数超阈值就失败;敏感字段在 DTO 层就不出现。

改完只确认一件事:响应字段降到 8 个 敏感字段全部消失。

作者 9823189