如何增加对Javascript MVC应用程序的访问权限



我最近完成了我的第一个AgilityJS项目,这是一个基于web的文件浏览器,可以创建和管理文件夹和文件,并在文件夹树中导航。我遵循了关于设计的各种AgilityJS建议,最终在一个Javascript文件中获得了所有的HTML和Javascript。

现在,我想提供这个应用程序的"只读"版本,它不能添加/编辑/删除文件和文件夹。我想在网站上有两种用户类型,一种类型只能读取文件和文件夹,另一种类型可以管理。

我的问题是,如何将这些权限差异扩展到我的AgilityJS应用程序中?我知道如何在服务器端保护我的端点和操作,但我想知道在客户端实现这一点的最佳方法。我应该创建一个具有有限功能的单独版本的应用程序吗?我应该简单地隐藏某些按钮/功能吗?是否存在理论、框架等。?哪个处理这个问题?任何指向正确方向的观点都会有所帮助。

LOL——可能有人可以写关于这个主题的书。一些非常基本的想法:
  1. 我将从MVC的哲学辩论开始。有人在MVC的帮助下认为,任何一段代码和任何一段数据模型都不应该实现两次。业务逻辑和模型到服务器。相反的观点则侧重于不惜任何代价为用户服务——即使这意味着为了避免额外的往返行程而加倍维护代码或模型。介于两者之间的方法定义了业务代码和模型的主源代码,并确保遵循主源代码的其他位置(主源代码将首先更改)。选择吧。你对这个问题的回答为用户界面的外观划分了界限。

  2. 您需要认真思考权限概念。从微软的角度来看,我认为他们为所有的应用程序投资了几十个人年来形成许可概念。理想的权限概念在很大程度上取决于您的应用程序。因此,在对您的应用程序知之甚少的情况下,几乎不可能解决这个问题。然而,权限概念必须制定策略,决定角色、组、访问权限、访问级别、上下文驱动的权限(例如,基于IP地址)、权限黑名单或白名单(每个用户在创建时拥有的权限)。微软的一个例子:http://office.microsoft.com/en-us/windows-sharepoint-services-help/permission-levels-and-permissions-HA010100149.aspx

  3. 客户端上的数据不安全!!!无论你在客户端上做什么,无论是数据隐藏、加密、压缩…-如果这是在客户端上完成的,那么有一些方法可以读取数据(甚至通过禁用数据操作)或恢复这些数据。有人可以将数据发送到你的服务器,而在那里,客户端甚至不应该给出更新表单,这可能会被黑客实现。因此,一旦您开始实现权限,请确保您发送给客户端的所有数据都允许用户读取,并且每次向数据库添加/更新数据时都要进行权限检查。

最新更新