Permissions 如何扩大对Javascript MVC应用程序的访问权限

Permissions 如何扩大对Javascript MVC应用程序的访问权限,permissions,agility.js,Permissions,Agility.js,我最近完成了我的第一个AgilityJS项目之一,这是一个基于web的文件浏览器,允许您创建和管理文件夹和文件,并在文件夹树中导航。我遵循了关于设计的各种AgilityJS建议,最终将我所有的HTML和Javascript放在一个Javascript文件中 现在,我想提供这个应用程序的“只读”版本,它不具备添加/编辑/删除文件和文件夹的功能。我想在网站上有两种用户类型,一种只能读取文件和文件夹,另一种可以管理 我的问题是,如何将这些权限差异扩大到我的AgilityJS应用程序中?我知道如何在服务

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

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


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

LOL-也许有人可以写关于这个主题的书。一些非常基本的想法:

  • 我将从MVC的哲学辩论开始。有人认为,在MVC的帮助下,任何一段代码和任何一段数据模型都不应该实现两次。服务器的业务逻辑和模型。相反的观点是不惜任何代价为用户服务——即使这意味着为了避免额外的往返而加倍维护代码或模型。中间的方法定义了业务代码和模型的主源代码,并确保遵循主代码的其他位置(主代码将首先更改)。选择吧。您对该问题的回答将导致用户界面的外观边界

  • 你需要认真思考权限的概念。看看微软,我认为他们为所有的应用程序都投入了几十人年的时间来构建许可概念。理想的权限概念在很大程度上取决于您的应用程序。因此,在对应用程序了解很少的情况下,几乎不可能解决这个问题。然而,权限概念必须制定策略,决定角色、组、访问权限、访问级别、上下文驱动权限(例如基于IP地址)、权限黑名单或白名单(每个用户在创建时拥有的权限)。微软的一个例子:

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