javascript - 组织团体/特权的框架/理论

标签 javascript database privileges

我正在编写一个网络应用程序,用户可以在其中创建组并将其他用户添加到其中。多个用户可以位于多个组中。您可以通过加入群组获得某些特权或控制权,例如能够查看内容。所有这些都类似于 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/

相关文章:

javascript - 使用父类并获取子类的中间部分

mysql - 使用加载数据 infile 的最低数据库权限

ruby-on-rails - Rails 迁移和 PostgreSQL : separate user for migration and setting privileges for production user

database - 代码控制下数据库脚本的最佳实践是什么

c++ - cmcfg32.lib 在哪里?

javascript - 为什么我的数组项被添加到顶部,而滚动条仍保留在顶部?

php - 在客户端(JQuery)和服务器(PHP)之间同步表单验证 - 最佳方法

javascript - 寄生构造函数模式与工厂模式在技术上有何不同

mysql - 有谁可以隐藏mysql中的引用吗?

javascript - 从客户端传递选择查询