代码之家  ›  专栏  ›  技术社区  ›  Jerod Venema

将权限传播到javascript

  •  7
  • Jerod Venema  · 技术社区  · 16 年前

    我正在讨论将相当复杂的权限从服务器传播到Ajax应用程序的最佳方法,我不确定采用哪种最佳方法。

    本质上,我希望定义我的权限,这样我就可以一次请求整个权限集,并根据需要调整UI(UI更改的级别可以与禁用某些上下文菜单项一样低)。当然,我仍然需要强制执行权限服务器端。

    所以,我想知道是否有人对

    1. 维护权限并在服务器代码中使用它们
    2. 轻松访问javascript中的权限
    3. 不必为每个单独的权限向服务器发出往返请求

    思想?

    4 回复  |  直到 13 年前
        1
  •  2
  •   CMPalmer    16 年前

    如果您有一组清晰的权限,比如“用户级别”或“用户类型”,那么您可以在隐藏字段中向下传递该值,然后通过DOM访问该值。如果您的权限更为细化,您仍然可以这样做,但是您要么有很多隐藏字段,要么必须将信息编码为XML、JSON或其他格式。

    您可以将它们设置为位标志,这样您就可以使用一个带掩码的数值来查看用户是否具有特定活动的权限。这将是非常灵活的,只要您没有超过32个或更多的特定“权限”,这将允许在一个非常小的包(基本上是一个无符号in t)中对这些权限进行任何排列。

    例如:

    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很好,但是您不想在服务器上查询整个页面的每个特定权限。您可以在页面加载时执行一次,设置页面的表示并将值保存在全局变量中,然后在本地引用事件函数的权限。

        2
  •  2
  •   pkaeding    16 年前

    如果您将权限结构作为JSON对象(或者XML,如果您愿意的话)传输到客户机,那么您可以使用客户机端代码操纵该对象,并将其发送回服务器,服务器可以做任何它需要做的事情来验证数据并将其持久化。

        3
  •  1
  •   Gareth    16 年前

    我不一定认为它是最“正确”的解决方案,但是否可以将所有权限资料保留在服务器端,只为更新的用户界面服务,而不是某种JSON权限系统?

    你必须根据你的应用程序的繁忙程度和密集程度做出决定,但无论如何都是值得做的决定。

        4
  •  -1
  •   Diodeus - James MacFarlane    16 年前

    将它们编码为 JSON .