三种权限设计方案的归纳和比较

1.等级权限系统
这种权限系统在论坛中很常见,在这种系统中,权限如同官阶从低到高排列,每个用户对应一个权限,在权限中设定了这个用户的权限等级,在用户需要执行操作前先查看其权限等级是否大于执行操作所需要的权限等级,是则进行操作。

在等级权限系统中领域对象用户类User的基本属性如下:
id // 用户ID
name // 用户名

领域对象权限类Priviledge的基本属性如下:
id // 权限ID
userid // 持有此权限的用户id
level // 用户的权限等级

level的设置示例
level 对应可执行的功能
0 访问
1 可跟帖
2 可创建主贴
3 可删除主贴
4 可创建频道
5 可删除频道
6 可查看用户
7 可分配用户权限
8 可修改用户密码
9 可删除用户
...

使用中,执行一个操作比如创建主贴时,先从Session中取出用户,然后按其id查出其对应的权限等级,拿它和执行创建主贴所需要的等级(3)进行比较,高于则可进行创建主贴操作,否则报告权限不够.

等级权限系统简单易用,在如论坛等刚性控制系统中使用很好,但不适用于需要有范围权限控制的场合,这时我们需要范围限制权限系统.

2.范围限制权限系统
等级权限系统系统的缺点是控制范围过广,比如一个论坛中有很多子论坛,一个子论坛的分版主同时也能对另一个同等级分论坛的帖子进行控制,这明显是不合理的,对此我们需要将版主权限控制在一版之内,这时我们需要范围限制权限系统.这种权限系统在项目管理系统中很常见.

在等级权限系统中领域对象用户类User的基本属性如下:
id // 用户ID
name // 用户名

领域对象项目类Project的基本属性如下:
id // 项目ID
name // 项目名

领域对象权限类Priviledge的基本属性如下:
id // 权限ID
userid // 持有此权限的用户id
projectid // 此权限对应的项目
level // 用户的权限等级

转载请注明:代码家园 » 三种权限设计方案的归纳和比较

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)