客服账号能看到完整手机号,运营账号只能看后四位,配置里两个角色的判断写反了,运营反而拿到明文。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

LEVEL = {'cs': 'full', 'ops': 'tail4', 'guest': 'none'}
level = LEVEL.get(role, 'none')

脱敏级别用 if role == 'cs' 硬判断,角色名改过一次,旧分支还在。没有默认拒绝,兜底走的是最低级别。这一点先确认清楚,后面就不用反复试。

碰到「脱敏级别权限控制」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

具体做法是,权限矩阵配成表 角色对应字段粒度;默认返回最严级别 逐级放开;鉴权变更跑一遍矩阵用例;响应里带上当前脱敏级别 便于排查。

改完照着核一遍,两个角色的返回值与权限矩阵一致 运营看不到完整号码。

作者 9823189