题
我正在讨论将相当复杂的权限从服务器传播到AJAX应用程序的最佳方法,而且我不确定采用的最佳方法。
本质上,我希望定义权限,以便我可以一次请求一整套权限,并根据需要调整UI(UI更改可以与禁用某些上下文菜单项一样低)。当然,我仍然需要强制执行权限服务器端。
所以,我想知道是否有人对
的最佳方式有任何建议- 维护权限并在服务器代码中使用它们
- 可以轻松访问javascript中的权限
- 不必为每个单独的权限向服务器发出往返请求 醇>
思想?
解决方案
如果您有一组明确的权限,例如“用户级别”,或者“用户类型”,您可以在隐藏字段中向下传递值,并通过DOM访问该值。如果您的权限更细化,您仍然可以执行此操作,但是您要么拥有大量隐藏字段,要么必须将信息编码为XML或JSON或其他格式。
您可以将它们设置为位标志,以便您可以使用掩码对单个数值进行OR操作,以查看用户是否具有特定活动的权限。这将非常灵活,只要您没有超过32个特定的“权限”,就可以在非常小的包(基本上是无符号的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很不错,但您不希望在整个页面上查询服务器的每个特定权限。您可以在页面加载上执行一次,设置页面的表示并将值保存在全局变量中,然后在本地引用事件函数的权限。
其他提示
如果您将权限结构作为JSON对象(或XML,如果您愿意)传输到客户端,则可以使用客户端代码操作该对象,并将其发送回服务器,服务器可以执行任何操作需要验证数据并坚持下去。
我不一定认为它是最“正确”的。解决方案,但是可以保留服务器端的所有权限,只提供更新的UI而不是某种JSON权限系统吗?
你必须根据你的应用程序预期的繁忙程度和密集程度做出决定,但绝对是一个值得做出决定的决定
将它们编码为 JSON 。