You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于权限策略实现角色层级规则:禁止moderator封禁administrator账号

实现方案

步骤1:调整rank表结构,新增权重字段

给存储角色的rank表新增int类型的strength字段,设置为非空,默认值可以设为普通用户对应的权重数值。给现有角色按权限等级赋值:

  • admin:1000
  • moderator:800
  • premium:200
  • 普通user:100
    预留足够的数值间隔,后续新增角色直接填入对应权重即可,不需要修改原有业务逻辑。

步骤2:改写Policy核心校验逻辑

把之前硬编码判断角色类型的逻辑,替换成权重对比即可,伪代码示例(不同框架写法通用):

// 封禁操作权限判断
function canBan(currentUser, targetUser) {
  // 获取当前操作者的角色权重
  currentStrength = currentUser.rank.strength
  // 获取被操作目标的角色权重
  targetStrength = targetUser.rank.strength
  // 仅当前操作者权重严格大于目标时允许操作,需要同权限可互操作就把>改成>=
  return currentStrength > targetStrength
}

所有涉及权限高低判断的操作,都可以复用这套逻辑,后续新增角色只需要在rank表配置对应strength值即可。

步骤3:前端体验优化(可选)

前端渲染用户列表时,也可以用当前登录用户的权重和每行用户的角色权重对比,权重不满足要求时直接把ban按钮置灰或者隐藏,减少无效请求。

注意:前端校验仅做体验优化,后端的Policy校验绝对不能省略,防止有人绕过前端直接调用接口执行操作。

额外优化建议

权重数值尽量留足空白区间,比如1000到800之间空出200的差值,后续需要加super moderator这类中间等级角色时,直接填900即可,不需要调整原有角色的权重值。


内容的提问来源于stack exchange,提问作者Kylian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:24:03