信息系统通用权限模块设计方案Word文件下载.docx
《信息系统通用权限模块设计方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《信息系统通用权限模块设计方案Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
开发环境:
J2EE下的web系统
操作系统:
Windows
数据库:
oracle和sqlserver
2总体设计
2.1设计目标
权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。
本系统的设计目标是对应用系统的所有资源进行权限控制,比如应用系统的功能菜单、各个界面的按钮控件等进行权限的操控;
也可以对资源位置进行控制,比如某个页面的路径。
2.2设计思路
权限系统的设计主要解决两个问题:
权限定义和权限分配;
权限定义是指系统用户和操作的定义,即建立用户信息和操作信息。
权限分配是指建立用户信息和操作信息之间的关系,只有建立了这种关系才能确定该用户是否有该操作的权限。
给操作用户赋予一种角色,再给每个角色分配具体的访问资源;
定义以人和操作〔例如按钮或者菜单〕为管理单位,人即系统登录用户,操作即每一个界面元素,如按钮、菜单,我们为这些操作分配一个唯一的权限码。
权限分配好后如何使用权限呢,方法一、登录系统后,首先进行权限验证,如果他的权限拥有与界面元素相同的权限编号,则界面元素显示,反之,则隐藏。
方法二、通过过滤器实现,对资源的访问路径进行比较,有则进入,否则跳转到提示页面告知用户不能操作此功能。
权限系统的逻辑结构如下图:
图表1权限模块的逻辑结构
2.3主要功能和数据表
2.3.1主要数据表
2.3.2功能结构
以下为权限模块的功能结构
图表2功能结构
3详细设计
根据上面的设计原理,在对系统进行权限设计的时候,遵循以下步骤:
第一步:
定义操作,实际应用系统中可能会有很多菜单、按钮或者页面,因此要先把需通过权限控制的功能对象定义出来。
为了管理操作,我们首先对系统划分模块,然后为模块划分功能,最后为功能定义操作。
也许这个过程在系统设计时候已经完成,但我们是要提供一个完全可定义的权限系统,权限设计与具体业务无关,实际业务系统可按照自己的规划进行各模块的设计开发。
而在应用权限系统时,权限系统只要登记实际应用系统的功能模块名称和操作动作<
增加记录、删除记录等>
即可,从而对这些资源实现控制。
第二步:
定义角色,角色具体到实际业务工作中实际就是岗位职务或工种,角色建立好后,再往角色里添加可以访问的系统模块资源。
这些系统资源就组成了在系统中可访问的资源,一个系统可以有很多角色,不同的角色有不同的访问资源。
第三步:
为人员分配角色,在第二步定义角色时已定义好了它可以访问的系统资源,从而具有某个角色的人员就继承了该角色的操作权限。
3.1主界面
图表3系统主界面
3.2第一步:
定义登记应用系统菜单
图表4定义登记具体业务应用系统功能结构
树型菜单加上表格数据展示,让人对系统菜单一目了然,更方便管理;
图表5添加一个功能菜单
增加菜单,新增菜单自动编号,在模块url列登记实际业务模块的功能名称。
逐个登记业务系统所有的功能模块名称。
图表6修改菜单
3.3第二步:
角色管理
图表7角色管理主页面
图表8添加角色
图表9给角色赋予可访问的资源
左边为系统菜单展示及选择区,右边为已选菜单项展示区,这样让用户看着更直观,方便操作。
图表10修改角色
3.4人员管理
图表11人员管理主界面
图表12添加人员信息
图表13修改人员信息
由于使用系统的单位多数都有电子表格的人员名录,我们提供了将其导入本权限系统的功能。
图表14人员资料导入导出
人员信息导入导出,方便数据管理,避免系统更换时重新数据录入,从而减轻工作负担。
4外部系统集成方法
4.1集成方法
本模块与其他系统集成非常简单,只需要引入本模块根目录的perm包及WebRoot下的perm文件夹,然后将后面的色perm下的Springxml文件夹里的配置文件迁移到需要集成的配置文件里〔struts相关配置文件及spring的相关bean配置〕,最后移入WEB-INF下的drw.xml,还需要在web.xml加入以下容
<
!
--Ajax的dwr框架配置-->
servlet>
servlet-name>
dwr<
/servlet-name>
servlet-class>
org.directwebremoting.servlet.DwrServlet<
/servle
t-class>
init-param>
param-name>
debug<
/param-name>
param-value>
true<
/param-value>
/init-param>
/servlet>
servlet-mapping>
url-pattern>
/dwr/*<
/url-pattern>
/servlet-mapping>
--编码过滤-->
filter>
filter-name>
encodingFilter<
/filter-name>
filter-class>
.perm.util.EncodingFilter<
/filter-class>
encoding<
UTF-8<
/filter>
filter-mapping>
/*<
/filter-mapping>
注:
本模块使用了Ajax的DWR框架,在系统集成时必须引入dwr.jar。
否则,很多功能无常使用。
本模块采用的是oracle数据库,如要使用sqlserver,需要修改两个地方:
a、实体类映射文件。
Oracle映射文件class书写方式
Sqlserver映射文件class书写方式
b、控制层分页方法的实现〔.perm.server.impl包下的文件,里面方法已写好,只需取消注释,然后注释掉oracle的分页即可〕;
4.2权限控制方法一:
对页面元素进行控制
用户登录后,获得他的角色的所有可以访问的系统资源,然后对页面元素进行判断
logic:
iterateid="
module"
offset="
1"
length="
name="
moduleList
equalvalue="
2003"
property="
moduleId"
>
菜单三//表示如果用户的权限里有2003,则菜单三显示
/logic:
equal>
iterate>
4.3权限控制方法二:
对访问路径进行控制
用户登录后,获得他的角色的所有可以访问的系统资源,然后用户在访问系统资源时,对请求路径进行过滤.:
在web.xml里进行配置:
<
moduleFilter<
.perm.util.ModuleFilter<
noModule<
../msg.jsp<
*.do<
在Filter类里实现