【问题标题】:Elegant Web Permission Schemes优雅的 Web 权限方案
【发布时间】:2009-11-04 12:51:42
【问题描述】:

我目前正在编写一个大约有 6-12 页的 Web 应用程序。在每个页面上,我希望用户能够执行以下部分(或全部)操作:查看、添加、更新和删除。

我想到的当前权限方案是在数据库中有一个整数。这个整数将对应一个二进制数(例如:26 -> 11010)。生成的二进制数充当“切换”并确定用户拥有哪些权限。定义什么位代表什么权限存储在另一个表中。

我的问题是,如果每个页面都有 4 个选项(查看、添加、编辑、删除),那么这种确定权限的方式可能会失控。

对于这样灵活(在可配置性方面)但又不至于压倒性(在整数限制方面)的权限方案,是否有人有任何其他想法?

【问题讨论】:

    标签: permissions binary flags


    【解决方案1】:

    如果你真的需要走这条路,也许一个更好的答案是在你的数据库中有一个每页/每用户的行,具有一组权限,所以你的表看起来像这样:

     page        user     create read update delete 
     =====       =====    ====== ==== ====== ======
     test.html   joe      y      y    y      n 
     test2.html  joe      n      y    y      n 
    

    或者,通常情况下,您最好拥有作者、编辑、审阅者、管理员等角色,并为您的角色提供细粒度的权限,并将用户分配到角色中。

    【讨论】:

      【解决方案2】:

      我建议你不要诉诸比特。在数据库中为每个权限类别使用单独的列,并使用整数 1 和 0 来指示是否授予该权限。这将使您免于进行位操作,并且速度也很快。唯一的缺点是列数较多,根据您的描述,这似乎不是什么大问题。

      【讨论】:

      • 这-通过使用按位表示您的权限,您可能会觉得您在炫耀您的技术方面做得很好,如果这是您的目标,那就去吧,但在六几个月的时间,当您不得不返回并重新访问该代码以解决一些已经出现的问题时,您会希望您已经选择了明显且易于维护的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多