资源描述
权限设计阐明书
一、背景及目的
目前为止,企业项目中,几乎没有一种统一的权限设计,基本上是根据不一样的业务需求来设计不一样的权限。权限系统应当是一种较通用的系统,统一设计好一种方案后,后续的项目中统一用此权限系统,无疑比较省时省力。本文针对系统权限需求,论述权限设计应当实现的功能及其详细的数据库设计。
二、名词解释及术语
Ø 功能权限:能做什么的问题,如顾客登录系统后,有增长销售订单的功能。
Ø 数据权限:能在哪里干什么的问题,如顾客登录系统后,只能察看杭州分企业销售部的销售订单,而不能查看宁波分企业销售部的销售订单。
Ø 机构:组织机构,一种企业组织,可以称为一种机构。一种部门组织,也可以称为机构。机构可大可小。
Ø 职务:机构下某个顾客的职务,这里的职务不和权限挂钩。
Ø 顾客:参与系统活动的主体,这里的顾客指的是顾客的基本信息。
Ø 登录账户:顾客登录系统的信息。
Ø 角色:特定权限的集合。
Ø 资源:系统中的资源,重要是多种业务对象,如销售单、付款单等。
Ø 操作类型:对资源也许的访问措施,如增长、删除、修改等。
Ø 字段:某个资源下某个操作类型中的某个字段。
Ø 权限:角色可使用的功能,分角色的功能权限和角色的数据权限。
三、权限系统应当到达的目的
Ø 机构和职务是单独的,当顾客在某个机构下,并且顾客拥有某个职务时,才认为机构和职务有关。如:机构下有研发部,职务中有经理的职务。某个顾客在研发部下,并且该顾客的职务为经理,则认为该顾客为研发部经理。
Ø 一种顾客可以同步从属于多种机构下
Ø 顾客和登录账户可以是一对一的关系,也可以是一对多关系。
Ø 顾客的权限通过角色来控制,一种顾客可以拥有多种角色,顾客信息和角色关联。
Ø 顾客拥有不一样角色时,其权限应当是多种角色互相的补集。
Ø 角色可以互相继承,不过这里只实现单继承。一种树构造,基层的角色权限至少,最里层的分支角色权限最多。
Ø 一种角色拥有多种资源的操作权限。
Ø 当某个角色同步和机构、资源发生关系时,则代表此角色操作资源时,只能操作一种或多种机构下的数据。
Ø 当某个角色没有同步和机构、资源发生关系,则代表此角色操作资源时,可以操作所有的数据。
Ø 顾客的前台菜单显示根据角色所拥有的资源所决定,不一样的顾客在前端显示的 操作菜单是不一样样的。
Ø 页面中的功能按钮根据资源中所包括的操作类型所定义。
Ø 某个资源下,某个字段的隐藏与否通过字段来定义。
四、权限关系图
注:角色控制权限时,控制到字段级别临时不实现
五、数据库设计
参数配置表 datadict(单级数据字典)
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
type
变量类型
Varchar20)
3
name
变量名称
varchar(50)
4
sort
排序
int
5
state
启用状态
tinyint
0:未启用
1:启用
2:作废
6
avail
与否被使用
tinyint
0:未被使用
1:已被使用
7
edittime
最终一次修改时间
timestamp
8
remark
描述
varchar(200)
注:type = educate 为顾客表 user 中字段eduLever最高学历的配置
type = orggrade为机构表 org 中字段grade级别的配置
“启用状态”是指业务选择的时候会不会被显示出来以供选择
“与否被使用”是指实际业务中与否已经被引用,被引用的数据不能删除
未被使用的可以删除,已被使用的只能作废
机构 org
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
name
机构名称
Varchar(200)
3
parentid
上级机构ID
varchar(50)
4
grade
级别
varchar(50)
参数配置表datadict主键,指的是企业级或部门级
5
level
层次
varchar(20)
树构造中第几层
6
sort
排序
int
同级树机构中,排列的次序
7
avail
有效
tinyint
0:未使用
1:生效
2:作废
3:删除
8
remark
描述
Varchar(200)
职务 duty
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
name
职务名称
Varchar(50)
3
remark
描述
Varchar(200)
顾客user
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
name
真实姓名
varchar(50)
3
sex
性别
tinyint
1:保密
2:女
3:男
4
birth
生日
timestamp
5
marry
婚姻状况
tinyint
1:未婚
2:已婚
6
school
毕业学校
varchar(200)
7
edulevel
最高学历
varchar(50)
参数配置表datadict主键
8
specialty
专业
varchar(100)
9
finishdate
毕业时间
timestamp
10
comedate
入职时间
timestamp
11
worknum
工号
Varchar(20)
12
remark
描述
Varchar(200)
注:顾客的联络方式放入通讯录
登录账户login
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
loginname
登录账户
varchar(20)
3
loginpass
登录密码
varchar(50)
4
state
状态
tinyint
0:未启用
1:启用
2:关闭
角色role
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
name
角色名称
Varchar(50)
3
parentid
继承的角色ID
varchar(50)
4
remark
角色描述
Varchar(200)
注:这里的角色为单继承
机构、职务、顾客关系orgdutyuser
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
orgid
机构ID
varchar(50)
机构org表主键
3
dutyid
职务ID
varchar(50)
职务duty表主键
4
userid
顾客ID
varchar(50)
顾客user表主键
注:职务ID为空时,则代表顾客没有职务,而直接属于某个机构
顾客、登录账户关系userlogin
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
userid
顾客ID
varchar(50)
顾客user表主键
3
loginid
登录账户ID
varchar(50)
登录账户表login主键
顾客、角色关系userrole
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
userid
顾客ID
varchar(50)
顾客user表主键
3
roleid
角色ID
varchar(50)
角色role表主键
注:一种顾客有多种角色时,新增多条记录
资源resourse
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
name
资源名称
Varchar(50)
3
parentid
上级资源ID
Varchar(50)
4
link
资源网页地址
Varchar(200)
5
sort
同级资源排列次序
int
6
remark
描述
Varchar(200)
操作oper
序号
字 段 名
解释
类型长度
备注
1
id
ID
Varchar(50)
主键
2
resid
所属资源ID
Varchar(50)
资源resourse表主键
3
name
操作名称
Varchar(50)
4
link
操作网页地址
Varchar(200)
5
code
代表操作唯一的标识
Varchar(20)
6
remark
描述
Varchar(200)
注:程序实现时,“操作网页地址”处填写不变的地址。需要用到参数时,如删除某条记录时,需要使用记录的ID,则在网页代码中,在操作网页地址后加上需要的参数。
code字段,程序在开发时,对应某个页面中某处操作显示时,需要的编码。如新闻模块,新增新闻时,“新增”按钮对应的编号为001,则此处填写 001。这个编码完全由程序员自己定义。只要在某个资源下,此处标识唯一就行了。
角色功能权限rolefunc
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
roleid
角色ID
varchar(50)
3
resid
资源ID
varchar(50)
4
operid
操作ID
varchar(50)
操作oper表主键
注:假如一种角色有多种资源操作权限,则新增一行记录
角色数据权限roledata(业务名称:分管)
序号
字 段 名
解释
类型长度
备注
1
id
ID
varchar(50)
主键
2
roleid
角色ID
varchar(50)
角色role表主键
3
resid
资源ID
varchar(50)
资源resourse表主键
4
orgid
机构ID
varchar(50)
机构 org表主键
注:假如某个角色在此表中无记录,则表达此角色拥有所有数据的使用权限。
展开阅读全文