AllowedScope:同一个 action,对谁做
Permission 回答「能不能做」,Scope 回答「对谁做」。这是两个正交的维度。
仅有 order:read(见 Permission 的身份)还不够——
能读所有人的订单,和只能读自己的,是两种完全不同的权力。
区分它们的就是 AllowedScope(数据范围)。常见是一条从宽到窄的链:
Full ⊃ Group ⊃ Self ⊃ Public ⊃ None。选一个 scope,看同一张表里哪些行你看得到。
选一个 AllowedScope(当前身份:me · 属于 A 组)
commerce:order:read @ Self —— 你能看到的数据行
两个轴,不要混为一谈
把「能不能做」和「对谁做」拆开,授权就清晰了。下表把同一个 action 配不同 scope, 每格是一种真实的权力:
| 能力 (action) | @ Self | @ Group | @ Full |
|---|---|---|---|
article:update | 改自己的文章 | 改本组的文章 | 改所有文章 |
order:read | 看自己下的单 | 看本组负责的单 | 看全平台的单 |
order:cancel | 取消自己的单 | 取消本组的单 | 取消任意单 |
Scope 的取值(本系列)
Full— 全部数据行,不限 owner / group。Group— 同部门/团队:row.group === me.group。Self— 仅自己创建/拥有的:row.owner === me.id。Public— 仅标记为公开的只读数据。None— 什么都看不到,等于没有这条 permission(占位/显式关闭用)。
Repository 落实。