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

时间:2012-09-08 14:40:00

标签: javascript ajax rest authorization

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

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

从服务器向客户端传递权限数据的最佳方法,考虑到:

  1. 交换的模型可能有其他嵌入式模型 特定许可
  2. 我还需要了解不同模型的READ和CREATE权限(因此模型对象尚不可用于客户端)
  3. 应最小化REST调用和数据库调用

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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

的引用
  

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

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

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

相关问题