能力发现替代能力检查是超媒体权限的核心转变
超媒体驱动动态权限的核心转变,是让客户端从服务端响应中发现当前可用操作,而不是在前端本地判断用户是否拥有某个权限点。
为什么重要
传统权限控制通常以“能力检查”为中心:前端拿到权限点列表,然后判断用户能不能做某个动作。这会让前端理解并维护权限规则,例如 user:delete、order:refund、task:transfer 等。
超媒体驱动权限则把问题改写为“能力发现”:客户端不再问用户是否有某个权限,而是查看当前资源表示中出现了哪些操作链接。服务端已经根据用户、资源状态和业务规则计算好可用动作,客户端只负责发现这些动作并渲染入口。
核心内容 / 成立机制
能力检查关注的是:
Can the user do X?
能力发现关注的是:
What can the user do now?
这个转变成立的前提是,服务端返回的不只是资源数据,还包括当前状态下可执行的操作。例如响应中的 _links.delete 存在,就表示客户端可以展示删除入口;如果不存在,客户端就不展示。
这让权限结果成为资源表示的一部分,而不是前端额外维护的一套规则。
应用要点
- 前端不应再根据角色或权限点直接决定操作入口。
- 服务端需要在响应中明确声明当前可用操作。
- 客户端应把超媒体链接视为“可尝试操作”的来源,而不是最终授权结果。