使用 PostgreSQL 继承的用户权限数据库设计



我的任务是使用PostgreSQL创建一个数据库。我必须通过继承来实现用户权限。我对如何做到这一点没有清晰的认识。假设我有3个用户角色:管理员主持人注册用户。我想的是有一个users表,它将保存有关用户本人的标准数据(名字、姓氏、电子邮件、密码…)。表userswold有一个用户所属组(主持人、管理员或注册用户)的FK,这样我就知道要查询哪个表才能获得权限。

由于管理员版主具有注册用户的权限,我认为管理者主持人表将继承已注册用户权限并添加他们自己的特定权限。这些表在那里只是为了获得权限,它们与任何其他表都没有关系。

然后,稍后我将查询user_group表以查看用户属于哪个组,然后查询正确的表以获得权限(将是布尔类型)。

但使用这种方法,我看不出有什么方法可以限制特定用户的特定权限(例如发布评论)。我必须限制整个团队的权限。

如有任何关于最佳方式的建议,我们将不胜感激。

一个典型的基于ACL的安全模式听起来非常像您所描述的。一个用户可以有一个或多个角色,一个角色可以有权限(一个角色似乎与您的组相同)。

你的问题的答案在很大程度上取决于你需要的粒度级别(在我参与的一个项目中,我们需要在上面描述的经典示例的基础上增加一个级别)。正如我看到的例子,你有两个选择:

  1. 将权限直接分配给用户。事实并非如此,因为你还需要角色(管理员、主持人)等。如果一个角色可以发表评论,通常你不想将其限制在少数用户(如果你想对更多的用户这样做,而不是对另一个角色)

  2. 如果你需要这个,也许一个异常机制可以工作。一个用户有一个角色,但可以有一个单独的表来存储异常,即使它有特定的角色,也不允许他的权限

最新更新