基于RBAC的权限管理在销售合同管理系统中的设计与实现
2012-10-12仲梁维
张 凯,仲梁维
ZHANG Kai1, ZHONG Liang-wei2
(1. 上海理工大学 管理学院,上海 200090;2. 上海理工大学 CAD中心,上海 200093)
0 引言
在全球经济一体化大背景下,企业间竞争愈演愈烈,传统模式下的手工管理销售合同已经不能满足企业的发展需求,企业急需使用信息化手段来快速反应市场需求、提高顾客满意度,进而提高企业的核心竞争力。销售合同管理是一项涉及多部门、多角色人员、安全保密性要求极高的企业日常管理工作。为快速响应客户需求、缩短交货周期,进而高质量、高效率的为客户提供满意的产品或服务,利用现代信息化管理技术实现销售合同信息化管理具有重大意义。
针对机械企业的实际需求,以J2EE为开发平台,采用Java程序语言,底层数据库选用SQL Server 2005,开发出了B/S模式下的销售合同管理系统。采用RBAC模型对不同角色用户进行访问控制,大大提高了系统的安全性和权限管理的复杂性。
1 RBAC模型介绍
RBAC模型是20世纪90年代提出来的一种新的访问控制模型,本质上讲,该模型是对传统访问矩阵模型的扩展。该模型将用户与权限相分离,在用户与权限之间引入角色这一概念,通过授予用户适当角色进而来获得该角色的访问许可权。
1.1 RBAC基本概念
基于角色访问控制的要素包括用户、角色、权限等基本定义。
1)用户:使用系统的人。
2)角色:表示在一个组织中的工作职责,它描述了被授予此角色的用户所拥有的权利和责任。
3)权限:是一个许可权,表示对一个或多个目标执行操作的许可权。
1.2 RBAC基本思想
RBAC的基本思想:权限被授权给角色,角色被授权给用户,用户不直接与权限相关联。RBAC对访问权限的授权由系统管理员统一进行管理,RBAC根据用户在组织内所处的角色做出访问授权与控制,授权规定是强加给用户的,这是一种非自主型集中式访问控制方式,其基本思想如图1所示。
图1 RBAC的基本思想
2 RBAC模型在系统中的应用
2.1 销售合同管理系统
以上海某机械设备制造企业生产实际为背景,以该企业销售合同管理工作的实际需求为依据,通过分析传统手工方式下销售合同管理流程现状中存在的不足,在流程化、规范化、标准化合同管理的基础上,研制了该信息系统。系统的核心目标是快速响应市场需求,提高企业核心竞争力,系统核心功能模块为:合同基本信息管理、财务管理、提货单管理、接口单管理、客户管理、用户管理、综合查询等。
2.1.1 系统总体架构
本系统采用当前流行的J2EE架构,开发环境为:MyEclipse +tomcat+SQL Server 2005。
整个系统遵循MVC模式,框架采用Struts,按J2EE分为表现层、中间层、数据服务层,中间层分为业务逻辑层、数据访问层、数据持久层。表现层采用JSP技术,中间层采用Spring+Hibernate,数据服务层用来存放系统数据。
2.1.2 系统流程
该企业为订货生产型企业,其根据客户需求生产不同类型、型号的成品。首先各部门销售员输入合同信息,部门领导对录入的信息进行审核,审核通过则流转到财务处进行财务审核,若通过,销售总部则根据库存信息制定工作令计划报总经理批示,批示通过则根据BOM生成MRP报表交各车间进行作业,系统流程图如图2所示。
2.1.3 系统用户角色划分
根据各用户在合同管理流程中职责的不同,将用户分为如下几类:
1)系统管理员:拥有最高权限;
2)总经理:拥有最高查询权和审批权限;
3)销售主管:拥有合同信息审批权和相应查询权;
4)财务会计:负责进行财务审核;
5)拆分开票员:负责拆分设备并开提货单通知客户提货;
6)检测员:负责对设备进行检测;
7)销售员:负责将本部门合同信息输入系统。
2.2 RBAC模型在系统中的具体实现
2.2.1 数据库表设计
系统引入用户表、角色表和权限表,其关系如图3所示。
2.2.2 利用Spring IOC动态装载permission.xml
功能权限配置文件permission.xml用于描述系统各功能模块URL地址和权限编码之间一对多的映射关系,其核心代码如下:
图2 系统流程图
图3 各表关联图
应用程序启动时,使用监听器加载多个配置文件,利用<context-param>元素指定多个配置文件路径。以下配置文件增加在系统web.xml配置文件中,以便系统初始化时自动装载。
应用程序启动时,urlPermission-Mapping被自动初始化,当用户访问系统某一功能模块时,则通过该对象获得其URL对应的权限编码,进而判断用户是否有权访问该功能。
2.2.3 通过Servlet过滤器实现用户访问控制
Servlet过滤器是Servlet2.3规范以后新增功能,它是一小型Web组件,可以拦截浏览器发送的请求以及服务器做出的响应,以便查看、提取或操作客户机和服务器之间交换的数据,它常用于用户认证以及授权管理。
本系统中,用户登录系统通过验证后,登录处理类将用户各项信息包括用户编号、用户角色编号、用户权限编号保存在对象session中,以便后续生成相应系统菜单。
通过两次过滤来达到对系统安全、有效的访问控制。
一次过滤:通过用户登录过滤器LoginServlet防止非法用户跳过登录页面直接通过内部地址访问系统,从而有效保证系统访问的安全性。
具体处理过程如下:
当用户请求访问某个页面时,触发用户登录过滤器,该过滤器通过判断session对象中用户编号值是否为空来判断该用户是否登录,不为空,则说明该用户已通过合法性验证,进而进行二次过滤,生成相应系统菜单项;反之,则重定向到系统登录页面。
二次过滤:通过访问权限过滤器PermitServlet来控制不同权限用户对系统的访问,以避免越权操作以保证系统安全。
具体处理过程如下:
当用户经过LoginServlet完成合法性校验后,触发访问权限过滤器,该过滤器截取访问路径“?”之前部分,通过permission.xml配置文件获取该URL所映射的权限编码,以判断该编码是否存在于用户权限变量中,存在,则说明用户有权访问该功能;反之,拒绝访问,系统访问控制如图4所示。
图4 系统访问控制图
3 结束语
对用户访问权限实现动态化、易操作的有效控制是企业信息化管理信息系统开发中一个重要环节。本文探讨了RBAC访问控制策略在J2EE开发平台下基于B/S结构的销售合同管理系统中的应用。应用该模型,降低了授权管理的复杂性,解决了该系统面向多部门、多用户、安全性要求高这一特点。
所开发的合同管理系统符合企业的业务流程,系统操作界面简洁、可操作性强、易维护,具有很好的查询、统计、分析和报表功能,为企业做出科学合理决策提供了重要依据。通过使用该系统,大大提高了市场响应速度、缩短了产品交货周期、提高了客户满意度,为企业赢得了更多的客户和市场。
[1]方婧. RBAC模型在水利规划管理系统中的应用[J]. 计算机与数字工程, 2010, 243(1): 121-123.
[2]胡日新, 史姣丽. 角色访问控制模型(RBAC)在学院办公管理系统中的应用[J]. 电脑知识与技术, 2009, 30(5):8603-8604.
[3]赖华伦, 仲梁维.基于WEB的机械设备企业销售合同管理系统研究[J]. 电脑知识与技术, 2008, 9(4): 2663-2665.
[4]Ravi Sandhu, Samarati P. Accesscontrol: principlesandpractice [J]. IEEEComunication, 1994, 32(9): 40-48.
[5]李刚. 轻量级J2EE企业应用实践—Strusts+Spring+Hibernate整合开发[M].电子工业出版社, 2007. 331-338.