【发布时间】:2016-01-12 13:56:12
【问题描述】:
我一直在尝试为我们公司开发一个内部员工门户。有部门、职位等级、工作区域、角色(用户、编辑、管理员、超级管理员等)和特殊组(执行官等)进行用户分组。
用户必须有一个(只有一个)部门。 用户必须有一个(只有一个)工作等级。 用户必须在至少一个区域工作。 用户必须有一个(只有一个)角色。 用户可能有一个或多个特殊组。
工作等级和角色是分层的(一个等级或角色可以继承另一个等级或角色),但其他的不是。
用户将只看到允许的菜单并访问允许的路线。
用户还将在发布新内容时选择哪些用户可以查看它。 例如: 组合 1:(IT 或财务部门)和(工作等级是 9、10、11 之一)和(区域是 1、5、8 之一)和(专属特殊组是 1、5、8 之一)除了用户id=1 组合2:(HR部门)和(工作等级为11)和user_id=3,4,5
组合可以通过 AND/OR 相互关联,如组合 1 AND 组合 2
所以,会有很多内容,每个内容都有不同的组权限。我尝试创建一个数据库模式,但很难获得登录用户可见的所有内容。序列化数据对于在 db 中保存组合集很有用,但对于序列化数据来说似乎是不可能的。在这个问题上使用 MongoDB 有优势吗?我怎样才能在表中保存组/用户权限的组合?
我研究了很多 ACL 和 RBAC 示例,但找不到最佳解决方案。请帮忙。
顺便说一句,我使用 Laravel 框架。
谢谢。
【问题讨论】:
标签: mysql database grouping acl rbac