基本上,我正在尝试全神贯注于如何正确实现基于角色的资源许可数据库模型。我正在寻找非常具体的数据库模型示例。
我现在所看到的方式,在纸面上看起来都很简单,您拥有“用户-角色-权限”:
users - id
roles - id
permissions - id
user_role - user_id, role_id
role_permission - role_id, permission_id
当您将资源添加到组合中时,对我来说麻烦就开始了。
比方说,我将拥有两种资源(可以是任何资源-业务,位置,部门...):
resource1 - id
resource2 - id
我需要以某种方式集成它们,我的尝试是这样的:
permissions - id, resource_id
resources - id
似乎合理-权限适用于特定资源。
但是如何将特定的资源实例分配给特定的角色/权限。例如。 “用户1”对“部门1”具有角色“角色1”,但对“部门2”没有角色。
选项1:似乎过于宽松,我可以将具有对resource2权限的角色分配给resource1,这具有零意义。还有混合角色-角色对resource1和resource2拥有权限。
role_resources - role_id, resource1_id, resource2_id
选项2:进一步拆分表格吗?
resource1_permissions - id
resource2_permissions - id
resource1_roles - id
resource2_roles - id
...
似乎有点过分。
期待听到聪明的想法。