[转]通用权限管理设计
[转]通用权限管理设计
[转]http://www.kanwenzhang.com/erp/fda6e89aec274a36/c/1979/11979.html
因
做过
些系统
权限管理
功能虽然
逐步完善,但总有些不尽人意
地方,总想抽个时间
更好
思考
权限系统
设计。
权限系统
直以

们应
系统不
缺少
个部分,若每个应
系统都重新
系统
权限进行设计,以满足不同系统
户
需求,
浪费
们不少宝贵时间,所以花时间
设计
个相
通
权限系统
有意义
。
二.设计目标
这个系统
,
们需
系统
所有资源进行权限控制,那么系统
资源包括哪些呢?
们
以
这些资源简单概括
静态资源(功能操作、数据列)
动态资源(数据),
分别称
象资源
数据资源,


们
系统设计
实现
叫法。
系统
目标就
应
系统
所有
象资源
数据资源进行权限控制,比如应
系统
功能
、各个界面
、数据显示
列以及各种行级数据进行权限
操控。
1. 权限
系统管理
于
面
每个权限,又存
两种
,
个
只
访问,另
种
授权,例如
于“查看
户”这个权限,如果
户只被授予“
访问”,那么
就不能
所具有
这个权限分配给其
人。
应
系统
具体操作
,
户
以自己拥有权限信息,
以归属于0~n个角色,
属于0~n个组。
权限集
自身具有
权限、所属
各角色具有
权限、所属
各组具有
权限
合集。
权限、角色、组
间
关系都
n
n
关系。
3. 角色


许
拥有相似权限
户进行分类管理,定义
角色
概念,例如系统管理员、管理员、
户、访客等角色。角色具有
级关系,
以形成树状视图,父级角色
权限
自身及
所有子角色
权限
综合。父级角色
户、父级角色
组同理
推。
4. 组

更好地管理
户,
户进行分组归类,简称
户分组。组
具有
级关系,
以形成树状视图。
实际
,
们知道,组
以具有自己
角色信息、权限信息。这让
想
们
QQ
户群,
个群
以有
个
户,
个
户
以加入
个群。每个群具有自己
权限信息。例如查看群共享。QQ群
以具有自己
角色信息,例如普通群、
级群等。

有
图
以看出,这四
关系
复杂,而实际
比这个图还
复杂,权限、角色、组都具有
级关系,权限管理
应
系统
比较棘手
问题,
设计
个通
权限管理系统,工作量
着实不
。
当然
于有些项目,权限问题并不
那么复杂。有
只需
牵涉
权限
户两种类型
象,只需
给
户分配权限即
。
另
些
,引入
角色
象,例如基于角色
权限系统, 只需
给角色分配权限,
户都隶属于角色,不需
单独
户分配角色信息。
理清
象关系
,让
们接着
进行数据库
设计。
数据库建模时,
于N
N
关系,
般需
加入
个关联表
表示关联
两
关系。
步估计
,本系统至少需
十张表,分别
:权限表、
户表、角色表、组表、
户权限关联表、
户角色关联表、角色权限关联表、组权限关联表、组角色关联表、
户属组关联表。当然还
能引出
些相关
表。
面让
们
PowerDesigner
画出各表吧。
权限管理设计篇(二)——数据库设计" src="http://img.kanwenzhang.com/images/t2/200907/20090707055803926.bmp">
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
tu_id |
bigint |
pk, not null |
|
所属组织 |
to_id |
bigint |
fk, not null |
|
登录帐号 |
login_name |
varchar(64) |
not null |
|
password |
varchar(64) |
not null | |
|
vsername |
varchar(64) |
not null | |
|
手机号 |
mobile |
varchar(20) |
|
|
电子邮箱 |
|
varchar(64) |
|
|
创建时间 |
gen_time |
datetime |
not null |
|
登录时间 |
login_time |
datetime |
|
|
last_login_time |
datetime |
||
|
登录次数 |
count |
bigint |
not null |
2. 角色表
|
角色表(TRole) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
角色ID |
tr_id |
bigint |
pk, not null |
|
父级角色ID |
parent_tr_id |
bigint |
not null |
|
角色名称 |
role_name |
varchar(64) |
not null |
|
创建时间 |
gen_time |
datetime |
not null |
|
角色描述 |
description |
varchar(200) |
|
3. 权限表
|
权限表(TRight) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
权限ID |
tr_id |
bigint |
pk, not null |
|
父权限 |
parent_tr_id |
bigint |
not null |
|
权限名称 |
right_name |
varchar(64) |
not null |
|
权限描述 |
description |
varchar(200) |
|
4. 组表
|
组表(TGroup) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
组ID |
tg_id |
bigint |
pk, not null |
|
组名称 |
group_name |
varchar(64) |
not null |
|
父组 |
parent_tg_id |
bigint |
not null |
|
创建时间 |
gen_time |
datetime |
not null |
|
组描述 |
description |
varchar(200) |
|
5. 角色权限表
|
角色权限表(TRoleRightRelation) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
trr_id |
bigint |
pk, not null |
|
角色 |
Role_id |
bigint |
fk, not null |
|
权限 |
right_id |
bigint |
fk, not null |
|
权限类型 |
right_type |
int |
|
6. 组权限表
|
组权限表(TGroupRightRelation) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
tgr_id |
bigint |
pk, not null |
|
组 |
tg_id |
bigint |
fk, not null |
|
权限 |
tr_id |
bigint |
fk, not null |
|
权限类型 |
right_type |
int |
|
7. 组角色表
|
组角色表(TGroupRoleRelation) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
tgr_id |
bigint |
pk, not null |
|
组 |
tg_id |
bigint |
fk, not null |
|
角色 |
tr_id |
bigint |
pk, not null |
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
tur_id |
bigint |
pk, not null |
|
tu_id |
bigint |
fk, not null | |
|
权限 |
tr_id |
bigint |
fk, not null |
|
权限类型 |
right_type |
int |
|
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
tur_id |
bigint |
pk, not null |
|
tu_id |
bigint |
fk, not null | |
|
角色 |
tr_id |
bigint |
fk, not null |
|
字段名称 |
字段 |
类型 |
备注 |
|
记录标识 |
tug_id |
bigint |
pk, not null |
|
tu_id |
bigint |
fk, not null | |
|
组 |
tg_id |
bigint |
fk, not null |
11. 组织表
|
组织表(TOrganization) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
组织id |
to_id |
bigint |
pk, not null |
|
父组 |
parent_to_id |
bigint |
not null |
|
组织名称 |
org_name |
varchar(64) |
not null |
|
创建时间 |
gen_time |
datetime |
not null |
|
组织描述 |
description |
varchar(200) |
|
12. 操作日志表
|
操作日志表(TLog) | |||
|
字段名称 |
字段 |
类型 |
备注 |
|
日志ID |
log_id |
bigint |
pk, not null |
|
操作类型 |
op_type |
int |
not null |
|
content |
varchar(200) |
not null | |
|
操作人 |
tu_id |
bigint |
fk, not null |
|
操作时间 |
gen_time |
datetime |
not null |




浙公网安备 33010602011771号