快缩短网址 · 优雅权限设计札记
——当一棵树长出多重身份
一、RBAC 的古典诗
传统 RBAC 像一首十四行诗:
用户 → 角色 → 权限
三行足矣,朗朗上口。
然而,现实是一座迷宫,
一个人常常戴着几副面具,
同一张脸,在不同的走廊里,
拥有截然不同的钥匙。

二、现实的褶皱
在「快缩短网址」(suo.run)的运营后台,
我们看见如下褶皱:
1. 组织是一棵榕树,气生根交错;
2. 同一枝干上,会计与出纳各守其叶;
3. 办公室主任既是一片叶子,也是一条枝干;
4. 一位副总经理,同时兼任财务掌门;
5. 一位财务掌门,又兼任多条短链业务的审批者。
于是,「职位」不再是单点,而是一张网;
「岗位」也不再是单线,而是多重身份。
三、命名,让万物各安其位
帐号 Account
——登录系统的肉身。
组织 Org
——那棵榕树。
岗位 Post
——树上的座位,一人一席,可复用。
职位 Position
——座位的模板,同一模板可长出无数座位。
角色 Role
——钥匙串,挂在职位上。
资源 Resource
——被守护的花园:菜单、数据、页面、API。
四、模型:榕树与钥匙串
1. 职位 Position 与角色 Role 绑定
一个职位可挂多串钥匙;
一串钥匙可被多个职位共享。
2. 岗位 Post 继承职位 Position 的全部钥匙
岗位是职位的实例,天然拥有其钥匙。
3. 帐号 Account 与岗位 Post 绑定
一人可坐多席,
于是钥匙串并集,
形成该帐号的最终权限。
示例
· 赵德彪
岗位:副总经理(Post-A)
职位:副总经理(Position-X)
钥匙串:Role-2、Role-3、Role-4、Role-5
登录后,可查看短链总览、审批高级报表、操作域名白名单。
· 赵子龙
岗位1:副总经理(Post-A)
岗位2:财务负责人(Post-B)
钥匙串:Role-1、Role-2、Role-3、Role-6、Role-7
登录后,
既能俯瞰全局,
又能深入账簿,
还能签发高额推广预算。

五、落地口诀
职位挂钥匙,岗位坐人,
人随岗位走,钥匙如影随形。
当组织架构调整,
只需挪动岗位,
权限自动迁徙,
管理员无需逐条改表,
榕树依旧葱茏。
六、尾声
在「快缩短网址」(suo.run),
我们把古典 RBAC 的十四行,
扩展为一首可生长的自由诗。
愿你也能在自己的系统里,
让身份与权限像枝叶与阳光,
既秩序井然,又生机盎然。
