权限系统设计模型及实现
3 具体实现
具体的实现包括了3个部分:权限的创建、权限的授权、权限的使 用。下面各个部分描述:
3.1 权限创建
权限的创建过程就是应用系统开发人员定义好系统中要权限控制的 资源以及定义对对资源具体化为哪些操作的过程。在我们的内容发 布里面作如下定义:
3.1.1 模块资源 把系统中要用到的模块进行资源的统一编号,以模块的编号作为 权限控制里资源编号,目前的编号规则为如下:
其它模块的按钮操作也可以类似编码,但因为目前核心是文章发 布。所以暂时这里不一一列出。以后扩展的时候一起实现。
3.1.4 栏目操作 栏目的操作按钮根据目前的需求定义如下操作。
按钮 新增 删除 修改
按钮(操作)编号 ADD DELETE EDIT
备注
授权 所有
AUTH C02_ALL
对这个栏目的子栏 目进行管理员的权 限分派
C02_COPY C02_MOVE C02_ALL
点“栏目管理” 新增一个栏目 删除一个栏目 修改一个栏目
红色表示目前未实 现的功能
如果用户有这个权 限,有所有操作的 权限
3.4.2 业务流程图
用户登录
是否有相应操作权限
Note:
栏目管理 文章管理 用户管理 角色管理
继续操作 结束
提示没有操作权限
对栏目的权限判断要实现递归遍历所有父亲栏目权限。
权限的使用有如下逻辑过程:
3.4 权限分级管理实现
3.4.1 模型分析 对于比较大型的网站,集中式的管理无法满足用户的内容分级别、 管理分层次的需求。因此要设计分级的权限管理模型。
从实际使用用例来看,有如下的功能(操作)模型:
栏目的授权完成栏目资源的权限分派,栏目资源的权限点分为如下表:
按钮(权限 点) 栏目管理
编号说明: 编号由”上级编号”+”两位本级编号”组成 上级编号由”功能码”+”两位本级编号”组成
功能码编码为:
新闻采集 P 内容发布 C 广告发布 A 系统管理 S 应用管理 Y
功能 新闻采集 采集状态 采集发布 站点维护 采集控制
编号 P P01 P02 P03 P04
内容发布 C 文章栏目设 C01 置 文章发布 C02 专题栏目设 C03 置 专题发布 C04
1.0 Chris Chen
15
明
权限系统设计模型及实现
设计一个比较抽象和通用的权限系统是一件比较复杂的工作,根据实际 目前项目需要,我们设计了如下一个简易基于角色的权限模块。
先引出权限系统中的概念
1 概念
用户:使用权限的登录用户或者系统.一个用户有多个角色,但同时只 能以一个角色登录系统。 角色:拥有相关权限的一个集合。一个角色可以有多个权限,一个角色 有多个用户。 权限:权限是一个资源+操作的组合。即权限是指对什么东西有什么动 作。如用户管理是一个资源,而用户的增加、修改是指具体的操作,而 整个“用户”+“增加”就构成了用户增加的权限。单独的资源或操作在权 限系统中没有意义。 操作:对资源的动作。如对数据的增加、删除、修改;对模块的登录 等。 资源:系统中要权限控制的东西。也就是什么东西要进行权限的控制。 资源有不同的类型,一般系统中会遇到的能用类型为功能权限和数据权 限。目前我们系统中用到的资源类型有“模块”和“栏目”,用英文module 和category表示。
按钮 新增 发布 删除 修改 预览 所有
审核
复制 移动
按钮(操作)编号 C02_ADD C02_PUBLIC C02_DELETE C02_EDIT C02_PREVIEW C02_ALL
C02_VERIFY
C02_COPY C02_MOVE
备注
如果用户有这个权 限,有所有操作的 权限 红色表示目前未实 现的功能
4 附件
操作编码规则: “功能编号”+”_”+”按钮编号” 如文章发布里的新增按钮编码为:C03_ADD
目不同类型的资源操作可能是不一样的。详见附件里的操作编码规则。
CmsFunction:表示系统中的某个功能模块。
CmsUserRole:
表示用户和角色的关联关系。一个CmsUser,有多个
CmsUserRole
CmsRolePermission: 表示角色和权限的关联关系。一个CmsRole有多个
CmsRolePermission
内容发布系统权限设计说明书
项目名称: 内容发布系统发布系统v1.0
分类: 设计说明书
部门: 开发部
作者: Chris Chen
日期: 2005年9月7日
参考号: V1.0
页数:
附注:
文档控制页
日 期 修改说明
版本 作 者 审批人 审批日期
2004-3月 建立
1.0 Chris Chen
2004-7- 增加栏目的权限控制说
广告发布 A
备注
客户管理 A01 广告位管理 A02 广告发布 A03
系统管理 S 用户管理 S01 角色管理 S02 权限管理 S03 模板管理 S04 参数配置 S05
应用管理 Y 投票管理 Y01 BBS管理 Y02 公告管理 Y03 留言管理 Y04
3.1.2 栏目资源 栏目资源的编号采用多级栏目的id,是数字 3.1.3 模块操作 模块的操作编码规则遵循统一的操作编码规则,即: “模块名称”+ “_”+”按钮名称” 其中按钮名称只在保证可以唯一标识就可以了,如用数字或者英 文。目前我们定义文章发布里的按钮名称为:
2 模型的描述
类图说明:
CmsUser: user的实现
CmsRole: role的实现
CmsPermission: 表示一个权限点。其实resourceid表示操作的资源编号,
resourcetype表示资源的类型,目前实现为module 表示是一个模块,
category表示资源是一个栏目;operateid 是操作的编号,对于模块和栏
如果用户有这个权 限,有所有操作的 权限
3.2 权限授权
权限 授权就是指对于某个角色赋予相关的栏目权限和模块权限。其 中栏目权限为树状显示如下图:
Байду номын сангаас
模块的权限如下图:
3.3 权限使用
对于前台使用权限的来说通过两个接口来调用。主要是UserInfoBean 和CmsAclManager来实现。其类图如下:
按钮(操作)编号 备注
ADMIN
栏目管理,考虑实 现的复杂性,把栏 目的增、删、改统 一成一个权限
栏目新增 栏目删除 栏目修改 新增 发布 删除 修改 预览 审核
复制 移动 所有
ADD DELETE EDIT C02_ADD C02_PUBLIC C02_DELETE C02_EDIT C02_PREVIEW C02_VERIFY