超媒体权限隐藏的是交互入口而不是安全边界
超媒体驱动权限可以隐藏用户当前不可用的操作入口,但真正的安全边界仍然必须由服务端授权校验承担。
为什么重要
如果服务端没有在响应中返回 delete 链接,前端就不会显示删除按钮。这可以减少误操作,也能让 UI 更贴合当前用户和资源状态。
但隐藏按钮并不等于阻止请求。用户仍然可以绕过前端界面,手动构造 HTTP 请求。因此,超媒体链接只能影响客户端看到和尝试的操作,不能替代服务端的权限判断。
核心内容 / 成立机制
超媒体权限有两层含义:
- 交互层:通过链接是否存在,告诉客户端当前可以展示哪些操作入口。
- 安全层:服务端在真正执行操作时,再次校验用户权限、资源状态和业务规则。
这意味着:
链接负责声明“当前可以尝试什么”;授权负责决定“最终是否允许执行”。
如果把链接隐藏误认为授权本身,就会把安全责任错误地下放到客户端。
应用要点
- 前端隐藏按钮只能作为交互优化,不能作为安全机制。
- 服务端必须在每个写操作、敏感操作执行前重新校验权限。
- 客户端应处理
403 Forbidden,因为链接出现后,资源状态或权限仍可能发生变化。 - 权限、资源状态和业务约束应统一由服务端判断。