我正在讨论将相当复杂的权限从服务器传播到 AJAX 应用程序的最佳方法,但我不确定最佳方法。
本质上,我希望定义我的权限,以便我可以一次请求一整套权限,并适当调整 UI(UI 更改可能与禁用某些上下文菜单项一样低级)。当然,我仍然需要在服务器端强制执行权限。
所以,我想知道是否有人对最好的方法有任何建议
- 维护权限并在服务器代码中使用它们
- 可以轻松访问 javascript 中的权限
- 不必为每个单独的权限向服务器发出往返请求
想法?
我正在讨论将相当复杂的权限从服务器传播到 AJAX 应用程序的最佳方法,但我不确定最佳方法。
本质上,我希望定义我的权限,以便我可以一次请求一整套权限,并适当调整 UI(UI 更改可能与禁用某些上下文菜单项一样低级)。当然,我仍然需要在服务器端强制执行权限。
所以,我想知道是否有人对最好的方法有任何建议
想法?
如果您将权限结构作为 JSON 对象(或 XML,如果您愿意)传输到客户端,您可以使用客户端代码操作该对象,并将其发送回服务器,服务器可以执行任何需要验证的操作数据并将其持久化。
如果您有一组明确的权限,例如“用户级别”或“用户类型”,您可以将值传递到隐藏字段中并通过 DOM 访问该值。如果您的权限更细化,您仍然可以这样做,但是您要么有很多隐藏字段,要么必须将信息编码为 XML 或 JSON 或其他格式。
您可以将它们设置为位标志,以便您可以将单个数值与掩码进行或运算,以查看用户是否具有特定活动的权限。这将非常灵活,只要您不拥有超过 32 个左右的特定“权利”,就可以在一个非常小的包(基本上是一个 unsigned int)中对这些权利进行任何排列。
例如:
0x00000001 //edit permission
0x00000002 //create new thing permission
0x00000004 //delete things permission
0x00000008 //view hidden things permission
.
.
.
0x80000000 //total control of the server and everyone logged in
然后具有权限的用户0x000007
可以编辑、创建和删除,但不能做其他事情。
在任何一种情况下,我认为您都在正确的轨道上 - 每个页面调用发出一次请求,将权限存储在全局 JavaScript 数据结构中,然后从那里开始。AJAX 很好,但您不想查询服务器以获取整个页面上的每个特定权限。您将在页面加载时执行一次,设置页面的显示并将值保存在全局变量中,然后在本地引用事件函数的权限。
我不一定将其视为最“正确”的解决方案,但是否可以将所有权限内容保留在服务器端,并仅提供更新的 UI 而不是某种 JSON 权限系统?
您必须根据您的应用程序预期的繁忙和密集程度做出决定,但绝对值得做出任何决定
将它们编码为JSON。