权限安全护栏

多人协作最怕两件事: 越权 (普通成员把自己提成管理员)和 误操作 (撤销掉公司唯一的最高管理员)。系统内置多道护栏,全部在 服务端强制执行 ——绕过界面直接调接口,同样被拦。

四道运行时护栏

  • 不能授出自己没有的权限 :分配角色时,目标角色的权限必须是自己权限的子集——分不出比自己更高的权限。
  • 最高管理员只能由最高管理员变更 :主管权限再全,也不能任命或撤换最高管理员。
  • 不能动自己 :不能改自己的角色、不能撤销自己的访问权限——防止手滑把自己锁在门外。
  • 公司至少保留一名最高管理员 :最后一个最高管理员不可被降级或撤销,公司永远有人能管。

两道定义层护栏

  • 配不出「影子管理员」 :自定义角色不能包含成员管理、角色管理权限——管人的权力只归最高管理员与主管。
  • 造不出超级角色 :创建/编辑角色时,勾选的权限也不能超出你自己的权限范围。
app.maichuhai.cn/settings/team/members
创建成员账号 当前登录:李蕾(主管)
角色 选择角色
主管
跟单员
供应商管理
产品录入员
下拉里没有「最高管理员」——只有最高管理员能任命最高管理员,下拉即第一道防线。
绕过界面直接提交?服务端同样拦截
PUT /api/merchant/users/… · 角色 → 最高管理员
403 · 只有最高管理员可以授予最高管理员角色
权限校验在服务端:界面拦一层、接口再拦一层,抓包改请求也无法越权。
成员详情 · 王磊(最高管理员)
危险区
撤销该成员的访问权限 撤销访问
公司至少保留一名最高管理员
最后一个最高管理员不可被撤销或降级——公司永远不会失去控制权。
演示:主管开账号时下拉只有可分配角色 → 越权请求被 403 拒绝 → 唯一最高管理员不可撤销

为什么这些护栏重要

权限系统的价值不在"能配",而在"配错了也出不了大事"。四道运行时护栏 + 两道定义层护栏保证: 无论怎么组合角色与权限,都不会出现失控的账号,公司也永远不会失去控制权