我的任务是使用PostgreSQL创建数据库。我必须通过继承来实现用户权限。我对如何做到这一点没有明确的愿景。假设我有3个用户角色:管理员,主持人和注册用户。我的想法是拥有一个用户表,其中包含有关用户自己的标准数据(名字,姓氏,电子邮件,密码......)。表用户将 FK 添加到具有用户所属组的表(主持人,管理员或注册用户),因此我知道要查询哪个表以获取权限
由于管理员和主持人拥有注册用户的权限,我认为管理员和主持人表将继承注册用户的权限,并添加他们自己的特定权限。这些表只是用于与任何其他表没有关系的权限。
然后我将查询 user_group 表以查看用户所属的组,然后查询右表以获取权限(其类型为boolean)。
但是通过这种方法,我没有看到限制特定用户的某种权限的方法(例如发布评论)。我必须限制整个小组的许可。
有关最佳方法的任何建议都将受到高度赞赏。
答案 0 :(得分:1)
典型的基于ACL的安全架构听起来与您所描述的非常相似。用户可以拥有一个或多个角色,角色可以拥有权限(角色看起来与您的组相同)。
你的问题的答案很大程度上取决于你需要的粒度级别(在我已经完成的项目中,我们需要对上述经典示例提供额外的级别)。正如我看到你的例子,你有两个选择:
直接为用户分配权限。似乎并非如此,因为您还需要角色(管理员,主持人)等。如果角色有权发布评论,通常您不希望将其限制为少数用户(如果您想这样做比其他角色更多的用户)
如果你需要这个,也许一个例外机制可以工作。用户有一个角色,但是可以有一个单独的表来存储异常,即使它具有某个角色,也不允许他使用权限