能力发现替代能力检查是超媒体权限的核心转变

超媒体驱动动态权限的核心转变,是让客户端从服务端响应中发现当前可用操作,而不是在前端本地判断用户是否拥有某个权限点。

为什么重要

传统权限控制通常以“能力检查”为中心:前端拿到权限点列表,然后判断用户能不能做某个动作。这会让前端理解并维护权限规则,例如 user:deleteorder:refundtask:transfer 等。

超媒体驱动权限则把问题改写为“能力发现”:客户端不再问用户是否有某个权限,而是查看当前资源表示中出现了哪些操作链接。服务端已经根据用户、资源状态和业务规则计算好可用动作,客户端只负责发现这些动作并渲染入口。

核心内容 / 成立机制

能力检查关注的是:

Can the user do X?

能力发现关注的是:

What can the user do now?

这个转变成立的前提是,服务端返回的不只是资源数据,还包括当前状态下可执行的操作。例如响应中的 _links.delete 存在,就表示客户端可以展示删除入口;如果不存在,客户端就不展示。

这让权限结果成为资源表示的一部分,而不是前端额外维护的一套规则。

应用要点

  • 前端不应再根据角色或权限点直接决定操作入口。
  • 服务端需要在响应中明确声明当前可用操作。
  • 客户端应把超媒体链接视为“可尝试操作”的来源,而不是最终授权结果。