如何将许可/授权数据传递给客户端 Javascript?

Mar*_*rio 5 javascript ajax rest authorization

我有一个 javascript web 应用程序几乎完全呈现客户端。数据通过 REST 接口使用模型在客户端和服务器之间交换,然后使用客户端模板呈现。

我现在需要根据用户角色/权限(授权是基于服务器端模型的 ACL)有条件地呈现 UI 的某些部分(或执行某些操作)。

考虑到以下几点,将权限数据从服务器传送到客户端的最佳方式是什么:

  1. 交换的模型可能有其他嵌入模型,并获得他们的特定许可
  2. 我还需要知道不同模型的 READ 和 CREATE 权限(因此模型对象在客户端尚不可用)
  3. 应尽量减少 REST 调用和数据库调用

tue*_*tre 3

您的客户端应根据服务器按每个请求返回的信息向用户提供控件。如果来自服务器的响应包含一些旨在用于执行操作的信息,则客户端应该接受该提示,并可能启用按钮或使其可见或执行其他操作。

使用这种方法,您可以根据资源/权限(该模型+该 HTTP 方法)来定义 ACL。当服务器要返回资源的表示时,它可以通过轮询 ACL 以获取用户对该资源(或其他资源,例如子资源/后代资源)拥有的所有权限,从而包含用户应该看到该资源的任何选项。