5

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

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

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

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

2 回答 2

3

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

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

于 2012-09-24T07:19:57.480 回答
0

我不确定您的应用程序要求是什么,或者您当前是否正在使用任何 javascript 框架。我会看这里。Addy Osmani 在 javascript 社区中非常有名,并帮助创建了这个 javascript 框架。看起来它有能力处理你的问题。这是主要自述文件的引述

沙盒包含一个权限层,允许您为小部件配置权限,例如特定小部件是否有权呈现到页面等。

还有许多其他的 javascript 框架,您可以研究这些框架,这将使处理页面级别的安全性更加清晰,并且意味着您不必重写大量代码。另一个例子是Backbone Marionette 它具有复合视图的概念,可以直接实现页面级安全性。

最后,另一种选择是根本不传输您的安全信息。您的 REST API 只能提供他们也有权访问的模型信息。您需要以可以适当处理“丢失”数据的方式编写客户端模板。

于 2012-09-08T17:37:08.853 回答