for user in editors: assign(user, "editor") // 5 次分配每人一次分配即获得 查看/编辑/发布 整组;策略条数 = 1 条角色定义 + 5 条分配。新增第 6 个编辑只再分配一次;要加「审核」能力,只改 editor 定义,6 人同时生效。
数据与服务 · 账号与安全
角色是一组权限的命名打包:分配角色等于整组授权,检查问「这个角色里含权限 X 吗」,移除角色则整组收回——不用逐条勾、逐条删。
角色把权限命名打包。先在这一台选成员、选角色、分配,看权限 chips 整组点亮;再检查「能否 X」看 ALLOW/DENY 落在请求卡;最后切「直接 per-user」对比策略条数爆炸。操作过一遍,再读后面的命名。
角色把一组权限命名打包。分配角色 = 整组授权;检查问「这个用户的角色里含权限 X 吗」; 移除角色 = 整组收回。切到「直接 per-user」对照不用角色的代价。
RBAC:这些 chips 是上方角色分配的整组结果——分配/移除一个角色,chips 整组翻转。
还没检查;选好成员和权限,点「检查」看 ALLOW/DENY 落在这张请求卡上。
原因:阿明还没有角色,所以没有任何权限。下一步:保持选中阿明、选中 editor,点「分配角色」把 查看/编辑/发布 这一整组一次授给他。对照:切到「直接 per-user」模式,就得逐条勾这三条。
提示:唯一的红色按钮是「分配角色」;检查、移除、重置与分段按钮全走中性。重点对照——分配后 chips 整组点亮、移除后整组熄灭、切「直接 per-user」看「策略条数」翻倍。
面板已经把每条规则演给你看了,这里把它们命名清楚,并补上无法直接操作的部分。
从「同岗位的人权限是否一致、要不要批量收放」出发,而不是默认都堆角色。
只走这几步,每步都改变服务端可验证的状态。
user → role);登录时把角色声明写进 session 或 token,作为后续请求的凭据内容。user.role.permissions.includes(action),命中放行、否则 403;前端按钮隐藏只是体验优化,不能替代服务端检查。只改一处——授予权限的方式——后续维护差很多。这是 RBAC 最该记住的一条。
for user in editors: assign(user, "editor") // 5 次分配每人一次分配即获得 查看/编辑/发布 整组;策略条数 = 1 条角色定义 + 5 条分配。新增第 6 个编辑只再分配一次;要加「审核」能力,只改 editor 定义,6 人同时生效。
for user in editors: grant(user, "view","edit","publish") // 15 条策略每人 3 条、5 人共 15 条策略;第 6 人到位要再勾 3 次,漏勾一条就少权限、错勾一条就越权。加「审核」能力要逐人改 6 次,没有角色这层抽象,维护成本随人数线性涨。
团队从 3 人扩到 30 人、每人都是编辑级权限。用角色和直接 per-user 授权,策略条数和后续加人成本差在哪?
术语的技术定义和行为以这些一手或权威资料为准。
和本知识点经常一起出现的概念。