我正在编写一个网络应用程序,用户可以在其中创建组并将其他用户添加到其中。多个用户可以位于多个组中。您可以通过加入群组获得某些特权或控制权,例如能够查看内容。所有这些都类似于 Facebook 的群组功能。
我知道这一切都可以通过数据库中的几个表来完成,这些表跟踪谁在哪个组中并相应地授予权限等。
我想知道是否有任何框架、理论或文章可以告知正确且最有效的方法
最佳答案
你想要的叫做ACL(访问控制列表)。有很多方法可以实现这一点(例如,查看 UNIX/linux 世界中的三步伪 ACL,或者 Windows 目录相关环境中的可继承多级 ACL)。
我使用非常简单的方法,我将在这里分享:
每个“对象”(文章、照片、任何其他资源)都有一些可以对其执行的预定义“操作”(例如“显示”、“投票”、“评论”等) 。通过每个对象和操作,我这样定义 ACL:
objectB.ActionX: all
objectC.ActionX: all !userA
objectD.Action1: group1 group2 userA !userB !group3
ACL 只是从左到右读取。每个“all”“group”“user”意味着允许对特定对象执行特定操作,而“!all”“!group”“!user”意味着不允许...
这种方法很容易实现 - 并且提供了几乎无限的可能性:)
希望这对你有帮助:)
关于javascript - 组织团体/特权的框架/理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181689/