三种权限设计方案的归纳和比较
来源:互联网 发布:类似双程的网络剧 编辑:程序博客网 时间:2024/05/23 00:56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
权限设计是很多系统重要的组成部分,主要用于控制功能和流程,本文将几种常见的权限设计方案(权限系统的名都是自己
起的)的基本设计写出来,其中不恰当处
还请大家指出,我们来讨论一下.1
.等级权限系统
这种权限系统在论坛中很常见,在这种系统中,权限级别如同官阶从低到高排列,每个用户拥有一个权限,其中设定了
这个用户的权限等级,在用户需要执行
操作前先查看其权限等级是否大于执行操作所需要的权限等级,是则进行操作。在等级权限系统中领域对象用户类User的基本属性如下:
id
// 用户ID
name
// 用户名
领域对象权限类Privilege的基本属性如下:
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
// 项目名
领域对象权限类Privilege的基本属性如下:
id
// 权限ID
userid
// 持有此权限的用户id
projectid
// 此权限对应的项目
level
// 用户的权限等级
其中,通过引入了新属性projectid,我们对权限的范围进行了有效限制,项目不同则权限等级再高也是无效,这样就起到
了限制权限能力范围的作用.
3
.范围限制单项权限系统
在上面两个权限系统中,权限高的自然能执行权限要求低的操作,这样做权力没有细分,在有些场合并不合理,比如即使
是董事长不可直接操作人事部的招聘任务,
他只对雇员去留有建议权.对于这样的场合我们需要使用范围限制单项权限系统.它的典型应用如工作流和OA系统。
在范围限制单项权限系统中领域对象用户类User的基本属性如下:
id
// 用户ID
name
// 用户名
领域对象项目类Project的基本属性如下:
id
// 项目ID
name
// 项目名
领域对象权限类Privilege的基本属性如下:
id
// 权限ID
userid
// 持有此权限的用户id
projectid
// 此权限对应的项目
abilityid
// 权限控制能力id
领域对象权限控制能力类ability的基本属性如下:
id
// 控制能力ID
item
// 控制能力子项
item的设置示例
item 对应可执行的功能
0
读
1
写
2
查
3
删
...
通过对权限能力的细分,用户权限的控制粒度更细了,对功能和流程就能有更精确的把握,适用于复杂的场合.
以上三种权限系统没有优劣之分只有适用场合的区别,前面的粗略但易于操作,后面的精确但失之烦琐,在现实使用中
我们应该根据场合选择合适的权限系统.
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 三种权限设计方案的归纳和比较
- 权限设计方案的归纳和比较
- 三种权限设计方案
- 简单的权限设计方案
- C/C++中链表的三种设计方案
- C/C++中链表的三种设计方案
- 无线模块的设计方案比较
- 权限设计方案
- 权限管理之基于RBAC的设计方案
- hibernate配置文件hibernate.cfg.xml的详细解释
- 软件测试方法大汇总
- MongoDB 副本集replSet 配置与分析
- 不止1.99亿!新12306.cn一期造价3.3亿元
- ashx页面中调用自定义的Profile
- 三种权限设计方案的归纳和比较
- web.xml配置文件
- 杂七杂八的小笔记
- learn of python driver for mongodb
- TCP心跳 | TCP keepAlive
- CMMI模型与SPICE标准对比分析
- hibernate+spring+struts
- Event对象(一)
- 关于delphi7 ActiveX的创建