在权限系统中,我定义了两种类型的权限:
1. 概念说明
A 系统级权限:从角色的角度出发,不特定于任何实际的资源的权限。比如“用户是否可以修改标题”这个权限,不针对于任何特定的标题。权限赋予给某个特定的角色。采用RBAC模型实现
B 对象级权限:从对象实例的角度出发。比如针对于某个特定的标题,编辑在这个标题上的权限。采用ACL模型实现。
那么判断用户是否可以修改某条的标题的判断顺序如下:
1) 用户所属的角色是否拥有“修改标题”的权限
2) 用户或者用户组是否在某条标题的的ACL列表当中
2. RBAC权限部分的表结构说明
1)系统权限(Permission)
系统权限列表
名称
|
定义
|
说明
|
id
|
bigint
|
主键,系统权限id
|
name
|
varchar
|
名称
|
2) 角色(Role)
角色表
名称
|
定义
|
说明
|
id
|
bigint
|
主键,角色id
|
name
|
varchar
|
名称
|
3) 授权(authorities)
给某个角色授予多项系统级权限
名称
|
定义
|
说明
|
id
|
bigint
|
主键,id
|
roleid |
bigint
|
角色id
|
permissionid |
bigint
|
权限id
|
4) 用户组成员(memeberships)
用户组以及用户组成员
名称
|
定义
|
说明
|
id
|
bigint
|
主键,用户id
|
groupid
|
bigint
|
用户组id
|
userid
|
bigint |
用户id |
roleid |
bigint
|
角色id |
3. RBAC权限部分的关系说明
用户和角色:用户和角色是多对多的关系。但是在授予某个用户某个角色的时候,是以用户组为单位的。比如用户A在用户组1中可能是“管理员”的角色,但是在用户组2中就可能是“普通用户”的角色。这种划分在业务系统中比较通用。当然,具体到一个用户,使用哪个用户组的角色来做判断,是由业务来决定的。
角色和系统级权限:是一个一对多的关系。通过授权来完成。当然在授权之前,需要把需要使用的系统及权限注射到数据库的permission表。
(夜露死苦)
posted on 2009-02-10 12:49
夜露死苦 阅读(1963)
评论(0) 编辑 收藏