首页 > 代码库 > 混合了RBAC和ACL的权限系统(一) -- 用户组织结构
混合了RBAC和ACL的权限系统(一) -- 用户组织结构
最近的工作是一个基础设计,打造一个基于RBAC和ACL的权限基础组件。
这个基础组件的特点是:同时混合了RBAC和ACL的认证方式,也就是说同时提供系统级别的授权(RBAC)和对象级别的授权(ACL)。
1. 表结构说明
1)组织单位(Organization)
组织单位作为基本结构单位。在人员的组织结构中,是用来表示组织结构树。(例如公司)
名称 | 定义 | 说明 |
id | bigint | 主键,组织结构id |
name | varchar | 名称 |
dn | varchar | distinguish name |
parentid | varchar | 父组织单位的id |
2) 用户(User)
是最小的自然单位,无法再包括子节点。对应自然人。(例如员工)
名称 | 定义 | 说明 |
id | bigint | 主键,用户id |
name | varchar | 名称 |
password | varchar | 密码 |
dn | varchar | distinguish name |
parentid | varchar | 所属的组织单位的id |
3) 用户组(Group)
包含了多个用户的组(例如公司中的项目组)
名称 | 定义 | 说明 |
id | bigint | 主键,用户组id |
name | varchar | 显示名称 |
dn | varchar | distinguish name |
parentid | varchar | 所属的组织单位的id |
4) 属性(Attributes)
用来记录用户、用户组、组织单位的属性。
名称 | 定义 | 说明 |
id | bigint | 主键,属性id |
ownerid | bigint | 属性的拥有者id |
ownertype | varchar | 属性拥有者类型:用户、用户组、组织单位 |
name | varchar | 属性名称 |
attribute | Text | 属性值 |
2. 关系说明
1) 用户组和组织单位:用户组是可以用来分配权限,而组织单位只是一个用来容器,不能用来分配权限,可以对它做组策备应用,组织简单一点说像一个文件夹,用来规划一个AD对象的。(比如一个公司可以拥有多个项目组,项目组是分配权限和资源的单位)
2) 用户和用户组: 是多对多的关系,同一个用户可以隶属于多个工作组,同一个工作组可以包含多个用户。(比如某个员工可以同时为多个项目组工作)
3) 用户和组织单位: 是一对一的关系,同一个用户只能在某个组织单位中。比如一个员工可以同时为多个项目组(用户组)工作,但是员工只能隶属于一个公司
http://blog.csdn.net/chruan/article/details/7105350
混合了RBAC和ACL的权限系统(一) -- 用户组织结构