权限安全护栏
多人协作最怕两件事: 越权 (普通成员把自己提成管理员)和 误操作 (撤销掉公司唯一的最高管理员)。系统内置多道护栏,全部在 服务端强制执行 ——绕过界面直接调接口,同样被拦。
四道运行时护栏
- 不能授出自己没有的权限 :分配角色时,目标角色的权限必须是自己权限的子集——分不出比自己更高的权限。
- 最高管理员只能由最高管理员变更 :主管权限再全,也不能任命或撤换最高管理员。
- 不能动自己 :不能改自己的角色、不能撤销自己的访问权限——防止手滑把自己锁在门外。
- 公司至少保留一名最高管理员 :最后一个最高管理员不可被降级或撤销,公司永远有人能管。
两道定义层护栏
- 配不出「影子管理员」 :自定义角色不能包含成员管理、角色管理权限——管人的权力只归最高管理员与主管。
- 造不出超级角色 :创建/编辑角色时,勾选的权限也不能超出你自己的权限范围。
创建成员账号
当前登录:李蕾(主管)
角色
选择角色
▾
主管
跟单员
供应商管理
产品录入员
下拉里没有「最高管理员」——只有最高管理员能任命最高管理员,下拉即第一道防线。
绕过界面直接提交?服务端同样拦截
PUT
/api/merchant/users/… · 角色 → 最高管理员
403 · 只有最高管理员可以授予最高管理员角色
权限校验在服务端:界面拦一层、接口再拦一层,抓包改请求也无法越权。
成员详情 · 王磊(最高管理员)
危险区
撤销该成员的访问权限
撤销访问
公司至少保留一名最高管理员
最后一个最高管理员不可被撤销或降级——公司永远不会失去控制权。
为什么这些护栏重要
权限系统的价值不在"能配",而在"配错了也出不了大事"。四道运行时护栏 + 两道定义层护栏保证: 无论怎么组合角色与权限,都不会出现失控的账号,公司也永远不会失去控制权 。