1、本科毕业设计说明书(论文) (2012届)论文题目 物业管理系统作者姓名 王 坚 指导教师 王 子 仁 学科(专业)所在学院 计算机科学与技术学院 提交日期 2012年5月27日 浙江工业大学本科毕业设计说明书(论文)摘要近年来,随着小区服务的多元化和繁杂化,传统的物业管理方式很难适应新的需求。采用物业管理系统,将信息化和网络技术运用到传统的物业管理中,可以很好地应对业主对于物业服务提出的多元化需求,提高物业服务水平。本系统是面向多物业公司、多小区共同使用的信息管理系统,主要功能模块包括:物业公司信息管理,物业小区信息管理,业主信息管理,物业费管理和短信平台管理等等。本系统采用B/S(Brow
2、ser/Server)架构和J2EE技术框架。为了满足多层次用户的权限控制需求,提高权限控制的灵活性,本系统采用RBAC(基于角色的权限控制)进行设计,采用Spring Security3.0技术框架实现。本系统采用AOP编程实现用户关键行为的日志跟踪。本系统的短信平台采用了中国移动Open MAS代理服务器提供的Web Service接口,短信服务与业务系统之间通过Java消息机制进行通信和同步。本系统的部署和使用,不仅有效地实现了物业公司的信息管理,还规范化了物业管理的工作流程,提高了工作效率;同时通过短信服务,拓宽了业主与物业管理人员之间的沟通渠道,实现信息的有效传递。关键词:物业管理,
3、RBAC,短信平台,Spring Security,AOP日志 IAbstractRecent years, the conventional property management services have become inadequate to fully meet the needs for the increasing diversification and complexification of requirements. Applying information and network technologies to traditional property managemen
4、t could meet diverse needs of owners, and promote the level of the service.This system is a shared information management platform among multi-properties company and multi-residential community. The main function modules include information management of property company, information management of r
5、esidential community, information management of owner, management of property charges and SMS platform management, etc. The system uses the B/S (Browser/Server) architecture and J2EE framework. In order to meet multi-level access control needs and improve the flexibility of access control, the acces
6、s control design is based on RBAC (Role Based Access Control) theory and implemented with Spring Security 3.0 Framework. Also the system uses AOP (Aspect Oriented Programming) technology to track users major behaviors. The SMS platform of the system uses the interface which provided by the Open MAS
7、proxy server of China Mobile. Java Message mechanism is used to communicate and synchronize between SMS service process and the web system.Using this system, not only helps to manage the property information, but also standardize the property management workflow and to improve work efficiency, furth
8、ermore, the SMS service broadens the channels of communication between owners and property management stuffs.Keywords:Property management, RBAC, SMS platform, Spring Security, AOP log目录摘要IABSTRACTI第一章 绪论11.1研究背景与意义11.2研究内容及现状11.3本文的主要工作21.3.1本文的研究内容21.3.2本文的组织结构31.4本章小结3第二章 物业管理系统需求分析42.1系统需求分析42.1.
9、1需求概述42.1.2用户概述42.1.3系统安全需求62.1.4系统日志需求62.1.5短信平台需求62.1.6业务功能需求62.2系统架构设计72.3数据库设计82.4小结9第三章 物业管理系统安全平台构建103.1RBAC基本模型103.2RBAC扩展模型103.1.1基本要素113.1.2基本关系123.1.3数据库表133.3Spring Security143.4Spring Security扩展153.4.1Spring Security扩展类图163.4.2Spring Security关键类实现173.5安全平台实现203.5.1配置管理203.5.2实时控制223.6本章小
10、结23第四章 物业管理系统的日志系统构建244.1Spring AOP概述244.1.1AOP基本概念244.2Log4j日志框架254.3日志格式定义254.4日志文件设置264.5日志切点配置274.6日志方法实现284.7本章小结29第五章 物业管理系统的短信平台构建305.1短信发送流程305.2JMS消息机制构建315.2.1ActiveMQ消息中间件315.1315.2.2Spring JMS + ActiveMQ配置315.2.3JMS消息格式定义325.2.4JMS消息生产者335.2.5JMS消息消费者345.3OpenMAS接口355.4业务短信管理365.3.1业务短信切
11、点配置365.3.2业务短信通知方法365.5群发短信管理375.6历史短信查询375.7本章小结38第六章 物业管理系统业务功能实现396.1公司信息管理396.2物业项目管理396.2.1小区信息管理396.2.2楼宇信息管理396.2.3房屋信息管理406.3业主信息管理406.4物业缴费管理416.4.1物业费创建446.4.2物业费录入456.4.3物业费审核466.5本章小结46第七章 总结与展望477.1总结477.2展望47参考文献48致谢50附录51附录1 毕业设计文献综述51附件2 毕业设计开题报告51附件3 毕业设计外文翻译51图目录图21组织结构图4图22系统整体用例图
12、5图23 物业管理系统业务功能需求结构图7图24物业管理系统整体架构设计8图25物业管理系统业务功能模块数据库关系图9图36 RBAC基本模型10图37 RBAC扩展模型11图38物业管理系统权限控制数据库E-R图13图39 Spring Security基本组件14图310 流经Spring Security框架的请求15图311 Spring Security扩展类图17图312 MyInvocationSecurityMetadataSource的loadDefinedResource方法实现18图313 MyInvocationSecurityMetadataSource的getAtt
13、ributes方法实现19图314 MyUserDetailsService的loadUserByUsername方法实现19图315 MyAccessDecisionManager的Decide方法实现20图316 资源管理页面(资源列表)21图317 角色管理页面(给角色分配权限)21图318 用户管理页面(创建用户)22图319 访问拒绝提示22图420用户行为跟踪日志片段26图421 Log4J日志文件配置26图422 Spring AOP日志切点配置28图423 添加操作时触发的日志记录函数29图424 批量添加操作时触发的日志记录函数29图525 短信发送流程顺序图30图526 面
14、向消息的中间件31图527 Spring JMS+ActiveMQ配置32图528 短信发送消息生产者33图529 短信发送消息消费者34图530 Open MAS接口35图531 业务短信切点配置36图532 短信平台页面(查找联系人)37图633 业主数据导入流程图41图634 物业缴费管理跨职流程图43图735 物业费项目创建表单44图636 财务人员界面物业费清单列表(导出)45图637 小区管理员界面物业费清单列表(录入)45图638 财务人员界面物业费清单列表(审核)46表目录表41用户操作日志格式定义表26浙江工业大学本科毕业设计说明书(论文)第一章 绪论1.1 研究背景与意义近
15、年来,随着市场经济的发展和人们生活水平的提高,住宅小区已经成为了人们安家置业的首选。人们不但对住宅本身的美观、质量要求越来越高,同时也对小区的物业服务和管理要求越来越高。传统的人工管理方法已经不能满足时代的需求,主要表现在以下几个方面:首先,在传统的物业管理中,管理者和业主的关系是管理服务与被管理的关系,业主不能积极参与到物业管理活动中去。其次,物业管理中的重要组成部分是客户服务,在传统的物业管理中,通常通过电话或申请单来完成服务申请,这种方式给数据修改、编辑、查询以及小区各种信息的管理带来了很大的不便。最后,由于各项服务都需要人手工去完成,更甚者要上门发传单以通知业主,这不仅增大了物业管理中
16、的工作量,也加大了人力资源的浪费。基于此,考虑采用B/S架构的Web技术实现物业公司的相关信息收集、发布、存储处理和交流,实现不同地域信息的快速传递和共享。采用基于Web的物业管理信息系统有利于实现物业公司对于小区信息的综合管理,便于准确查询和计算相关物业信息,进而达到提高效率降低成本的目的。同时,也有利于降低业主对于物业服务投诉次数,提高业主对物业服务的满意度,提升公司整体形象的目的。1.2 研究内容及现状物业管理系统的设计从低到高经历了三个阶段:第一个层次单项数据处理,该方法模仿手工管理方式,多用于简单的事务性工作,这也是目前国内大多数物业管理公司的计算机应用水平;第二个层次是数据综合处理
17、此时计算机应用呈现网络化和实时处理特点,已能在一定程度上提高物业管理效率;低三个层次则是管理信息系统(MIS),此时信息论、控制论和系统工程等优化理论在软件程序中得以运用。计算机网络和数据库的建立,使得计算机管理某个单一系统发展成为全面的管理系统,而且具备了较高程度的智能化决策能力。以往由于计算机技术和通信技术的限制,物业管理系统只能在一个低水平层次上进行简单的信息共享和系统互联,无法实现一个实时性、健壮性及扩展性良好的小区物业管理系统。而如今计算机技术的发展,为以上问题提供了一些较好的解决方案,通过构建一个基于B/S模式的小区物业管理系统可以很好地解决当前小区物业管理系统所面临的问题1.3
18、 本文的主要工作1.3.1 本文的研究内容本文详细阐述了基于B/S架构的物业管理系统的设计思路和方法以及课题的实现过程,并就课题中的几个主要方面作详细的分析和说明,该课题主要包括以下几个方面:(1) 根据从客户方面了解到的需求进行详细分析,并给出系统设计。(2) 扩展RBAC(Role-Based Access Control)基本模型,设计物业管理系统的访问控制模型。(3) 修改Spring Security3.0框架,实现系统的访问控制,构建物业管理系统的安全平台,使得不同用户登录系统后可自动加载拥有的功能模块,并可以屏蔽非法的访问请求。(4) 采用Spring AOP技术和Log4j日志
19、框架设计系统的日志跟踪系统,构建物业管理系统的日志系统,使得可追溯用户的关键操作(增、删、改操作)。(5) 采用OpenMAS二次开发包,构建物业管理系统的短信平台,使得业主可以接收到来自系统的消息。(6) 采用ActiveMQ消息服务器,构建物业管理系统的消息发送与接收机制,使得短信平台的短信发送服务可以与业务系统实现通信和同步。(7) 实现物业管理系统的其他业务功能。1.3.2 本文的组织结构本文共分为七个章节:第一章:绪论。介绍本课题的研究背景与意义、研究内容和现状,最后阐述本文的主要研究内容和组织结构。第二章:物业管理系统需求分析。介绍系统的整体需求、功能性需求和其他非功能性需求,并给
20、出系统的整体架构设计,数据库设计。第三章:物业管理系统安全平台构建。介绍本系统的RBAC扩展模型,以及对Spring Security框架的扩展。第四章:物业管理系统日志系统构建。介绍基于Spring AOP技术和Log4j日志框架实现的日志跟踪系统。第五章:物业管理系统短信平台构建。介绍基于中国移动Open MAS接口的短信平台实现,以及短信发送服务程序与Web系统之间的消息传递机制实现。第六章:物业管理系统业务功能实现。介绍物业管理系统中物业公司信息管理、物业项目信息管理、业主信息管理、物业缴费管理等功能的实现。第七章:总结和展望。总结系统开发过程中的经验和成果,并对系统的改进方向提出展望
21、1.4 本章小结本章简要介绍课题的研究背景与意义、以及该课题的国内外研究现状和主要研究内容,最后,给出了本文的主要研究内容及本文的组织结构51第二章 物业管理系统需求分析2.1 系统需求分析2.1.1 需求概述本系统是由中国移动舟山分公司发起并推广的面向全市物业公司共享的一套物业管理信息系统,所以本系统首先必须支持多公司、多小区的共同访问,而不造成数据的越权和非法访问,为此本系统需拥有一套完善的访问控制机制,以确保用户只能在权限范围内进行的操作。图2-1显示了系统客户的组织结构图。图21组织结构图物业管理系统的使用主要是为了实现物业管理过程的信息化,满足日益繁杂的业务需求,实现物业信息的有效
22、存储和传递,简化日常操作,提高管理效率。物业管理集中体现在物业小区的信息管理、业主信息管理、物业费缴费信息管理等。小区信息管理又包括了小区基本信息管理、楼宇信息管理、房屋信息管理等,物业费缴费信息管理又包括了物业费的创建和生成、物业费的录入、物业费的审核等三个流程。为了提高在物业管理过程中与业主的沟通与交互,本系统引入短信平台,物业公司可以以短信的形式传递一些通知提醒和温馨提示,同时在物业费管理流程中,以短信形式通知业主当前的缴费情况。2.1.2 用户概述本系统的用户包括以下五个基本类型(角色):移动公司管理员、物业公司管理员、物业公司财务人员、小区管理员、系统管理员。同时要求本系统可以通过权
23、限控制系统灵活的配置新的用户类型。五个基本角色的基本职责描述如下:(1) 移动公司管理员:负责物业公司信息的创建和维护,信息机账号的创建和维护。(2) 物业公司管理员:负责公司用户的创建和维护、小区信息的创建和维护、业主信息的创建和维护。(3) 物业公司财务人员:负责物业费缴费信息的创建和维护、缴费审核。(4) 物业小区管理员:负责物业费的录入工作。(5) 系统管理员:负责系统的初始化配置,包括系统的权限设置、功能模块配置、初始用户创建等。本系统的系统管理员和移动公司管理员用户各只有一个,每个物业公司都有各自的物业公司管理员、财务人员和若干个小区管理员。不用类型的用户登录系统后所拥有的功能模块
24、不同,相同类型的用户根据所在公司或小区不同,能够访问的数据也不同。图2-2显示了系统的整体用例图。图22系统整体用例图2.1.3 系统安全需求通过上述用户概述,我们了解到本系统的用户类型非常多,并且用户又分为不同的层次,按权限从高到低可以分成系统级用户、公司级用户和小区级用户。每个层次的用户能够的访问数据层次不同,如小区级用户只能查看其所在小区的信息;公司级用户可以查看本公司的多个小区的信息;系统级用户可以查看所有公司的信息。同一层次的用户,拥有的功能模块又有所不同,如公司管理员可以管理业主信息,却不能创建物业费信息,而公司财务却可以创建和审核物业费,但是却不能编辑业主信息。因此,本系统需要一
25、套完善的权限控制机制,以保障用户只在其权限范围使用系统,并且该权限控制机制可以支持灵活的配置,以适应需求变动。2.1.4 系统日志需求为了保证系统数据的安全,我们需要跟踪用户的一些关键操作,如对数据的增删改等操作。一旦数据被非法操作后,我们可以通过日志文件追溯数据修改的时间和修改者。2.1.5 短信平台需求传统的物业管理方式中,物业公司与业主之间的沟通只能通过张贴公告或逐户上门通知,这样不仅消息传递速度慢、耗费人力资源大,而且传递的效果也不佳。所以本系统引入短信平台功能,物业公司可以通过本短信平台实现与业主的沟通,不仅消息传递及时了,而且减少了不少人力资源。另外通过在业务流中(如物业缴费管理)
26、引入短信提醒功能,及时提醒业主当前缴费信息,能够有效提高业主对公司服务的满意度。2.1.6 业务功能需求为了满足多公司的共同使用,本系统必须支持以下功能模块:公司信息管理模块、信息机账号管理模块。为了满足物业公司的日常管理工作需求,本系统必须支持以下功能模块:公司信息管理模块、物业项目管理模块、业主信息管理模块、物业缴费管理模块。图2-3详细描述了本系统的功能性需求结构图。图23 物业管理系统业务功能需求结构图(1) 物业公司管理模块:该模块主要是管理物业公司的基本信息。(2) 信息机账号管理模块:信息机账号是指Open MAS服务器上注册的账号,每个物业公司都拥有一个账号,并且该公司所有短信
27、业务都使用该账号。(3) 物业项目管理模块:物业项目是指物业公司所管理的住宅小区或写字楼等,具体又包括了小区的基本信息管理、楼宇信息管理和房屋信息管理。(4) 业主信息管理模块:业主信息是指小区业主的基本信息及家庭成员信息,业主信息的房屋信息与物业项目信息关联。(5) 物业缴费管理模块:物业缴费主要是指物业费的收缴,本模块主要实现物业费缴费的流程,以及物业费信息的查看和检索。2.2 系统架构设计本系统采用Struts + hibernate + Spring架构进行Web系统的开发,同时为了解决批量短信发送后一直处于等待状态的系统瓶颈,将短信发送服务设计成一个单独的应用程序,并通过Java消息
28、机制进行通信和同步。本系统的采用Hibernate框架实现数据的持久化操作,不过在批量数据处理时考虑到执行效率以及内存占用等因素,采用了直接调用JDBC接口来实现,同时也在数据系统中创建存储过程和触发器以提高数据存储的效率。本系统控制层采用Struts框架的Action来处理业务逻辑,Action返回的数据为Json格式,可以被前台的JavaScript脚本语言处理,从而进行显示。Spring 框架是一个分层架构,由 7 个定义良好的模块组成。本系统使用了Spring的核心容器、Spring上下文、Spring AOP等组件。同时本系统还采用了Spring的子项目,包括Spring JMS、S
29、pring Security等组件。图24物业管理系统整体架构设计2.3 数据库设计通过对系统业务需求的分析,我们抽象出以下几个实体对象:公司、短信账号、短信、小区、楼宇、房产、业主、家庭成员、物业费项目、物业费,另外还有一张业主-房屋关系表。各个实体对象之间的关系均为一对多关系,包括:公司小区、公司短信账号、小区楼宇、楼宇房产、业主房产、业主家庭成员、小区物业费项目、物业费项目物业费、业主物业费。图2-5描述了系统实体对象的数据库表结构,及其它们之间的关系。图25物业管理系统业务功能模块数据库关系图基于角色的访问控制系统相关的数据库表设计在第四章中详细描述。2.4 小结本章对系统需求展开了详
30、细的分析,包括系统的业务功能需求和非业务功能需求(如:权限控制、日志系统等),接着给出了系统架构设计和数据库设计。第三章 物业管理系统安全平台构建3.1 RBAC基本模型1992年,Ferraiolo等人提出了基于角色的访问控制模型1。在RBAC模型中,权限(Permission)直接通过角色(Role)起作用,用户(User)被赋予一个或多个角色进而获取角色的权限,这很大程度上简化了权限的管理。在这种权限模式下,用户的角色转换变得很容易实现。角色针对组织中的各种单一功能进行创建,用户依据他们的责任和职位被指派一个或多个角色,用户对信息的访问在指派角色的基础上被管制。1996年,Sandhu发
31、布了RBAC96的RBAC基本模型2,图3-6显示了RBAC的基本模型。该模型中有三个实体集合和一个会话集合,叫做用户(User)、角色(Role)、权限(Permission)以及会话(Session),还包括了两对关系,用户角色分配(UA)和角色权限分配(PA),这两对关系都是多对多的关系。一个用户可以是多个角色的成员,一个角色也可以拥有多个用户;同样的,一个角色可以拥有多个权限,同一个权限也可以分配给多个角色。RBAC的关键就体现在这两个关系中。最终,是用户执行权限,角色作为中介使得用户执行权限。图36 RBAC基本模型3.2 RBAC扩展模型RBAC基本模型简化了权限的管理,使得可以灵
32、活配置用户所拥有的权限,但是它并不能满足所有的需求。例如:在物业管理系统中,公司管理员可以查看该公司管理的所有小区的业主信息、缴费信息等,但是小区管理员只能查看自己小区的信息。同样,A物业公司只能查看自己公司管理的小区信息,而不能查看B公司的小区新。如果要求RBAC基本模型实现上述控制,将会导致权限集合的扩散,使得用户能够访问权限范围之外的数据。经过分析不难发现,凡是涉及业务逻辑的控制,使用RBAC基本模型进行权限管理是比较困难的。RBAC基本模型优势在于解决对象(资源)层面上的权限管理,即执行者能否操作某个对象,能够对其进行何种操作。而对于数据层面上的权限管理,RBAC基本模型在实现校验上是
33、非常低效和复杂的。为此,本课题根据实际的我业务需求,对RBAC基本模型进行扩展,设计了符合物业管理系统需求的权限管理模型RBAC扩展模型,图3-7显示了RBAC扩展模型:图37 RBAC扩展模型比较RBAC基本模型和RBAC扩展模型,我们可以看到在RBAC扩展模型中增加了三个对象集合和三对关系,他们分别是:用户组(Group)、模块(Module)、资源(Resource)和用户-用户组分配(GA)、角色模块分配(MA)、权限资源分配(RA)。3.1.1 基本要素用户(User):在这个模型中用户是指直接操作本系统的人,如:物业公司的工作人员。角色(Role):是物业公司中特定的一种工作职责或
34、者是职位,如:公司管理员、会计等。属于同一角色的用户,他们一般是同一职位或是拥有相同责任的一组人,他们对本系统有着相同的操作功能。用户组(Group):表示能够访问同一批数据的一组用户的集合,例如:A公司用户组,表示属于该组的用户都能够访问A公司的所有数据;A1小区用户组,表示属于该组的用户都能访问A1小区的所有数据。模块(Module):表示一系列功能操作的集合,例如:用户信息管理(包括了用户的增、删、改功能),物业缴费管理(包括了物业费创建、录入、审核)。用户登录系统后能够根据角色自动加载模块列表。资源(Resource):表示所有的URL请求,如JSP页面请求、Action请求、JS文件
35、请求等。权限(Permission):是操作和资源的聚合,权限的自然属性决定于实际的应用系统,例如:物业管理系统中,权限可以是“查看业主信息、修改业主信息”会话(Session):表示用户登录后被激活的角色和用户组。在物业管理系统的权限管理中,一个Session对象关联一个用户,一个用户在一次访问中只能拥有一种角色,并且只属于一个用户组。3.1.2 基本关系在扩展的RBAC模型中共有五对关系,他们分别是UA(用户-角色分配)、PA(角色-权限分配)、GA(用户-用户组分配)、RA(资源-权限分配)、MA(角色-模块分配)。在物业管理系统中,GA和UA是一对多关系,用户只能属于一个用户组,一个用
36、户组可以有多个用户;一个用户只能拥有一个角色,一个角色可以拥有多个成员。PA、RA和MA是多对多的关系,一个资源可以被多个权限访问,一个权限也可以访问多个资源;一个资源可以被多个权限访问,一个权限也可以访问多个资源;一个角色可以拥有多个模块,一个模块也可以被多个角色拥有。3.1.3 数据库表图38物业管理系统权限控制数据库E-R图图3-8显示了物业管理系统安全平台的数据库E-R图。从图中可以看出,权限控制模块共有6张实体表和4张关系表。实体对象分别是:资源(Resource)、权限(Authority)、模块(Module)、角色(Role)、用户组(Group)、用户(User)。关系表分别
37、是:权限-资源(AuthorityResource)、角色-权限(RoleAuthority)、角色-模块(Role-Module)、用户-用户组-角色(UserGroupRole)。数据库的表结构和RBAC扩展模型中基本要素及基本关系分别一一对应。需要注意的是,用户组存在着层次关系,用户组共分为3个级别,每个用户组都有一个父用户组。级别为1的用户组的父亲用户组默认为0,级别为2的用户组的父用户组为级别为1的用户组中的一个,级别为3的用户组的父用户组为级别为2的用户组中的一个。“关联域”是指该用户组关联的物业公司或物业小区。3.3 Spring Security在传统的Web系统中,所有的权限
38、验证逻辑都混杂在业务逻辑中,用户的每个操作可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑被分散在系统的许多地方,难以维护。Spring Security框架很好的解决了此类问题,它将系统的权限验证逻辑的实现从业务中分离出来,作为一个单独的“切面”进行管理,它的主要组件如图3-9所示:图39 Spring Security基本组件Spring Security的架构在很大程度上依赖代理(delegates)和servlet过滤器,来实现环绕在web应用请求前后的功能层。Spring Security主要完成两件事情,其一是认证(Authentica
39、tion),其二是授权(Authorization)。Web系统引入Spring Security框架后,一个对受保护Web资源的请求要经过如图3-10所示的11层过滤器。图310 流经Spring Security框架的请求3.4 Spring Security扩展虽然Spring Security能够很好的实现对受保护Web资源的请求的认证和授权,但是它却并不天生就符合RBAC模型。一是,在Spring Security中,角色和权限的概念的等同的,即受保护的对象(资源)直接与角色挂钩,这显然不符合RBAC的思想。二是,Spring Security没有实现RBAC动态职责分离的要求,因为
40、Spring Security中的角色的概念与RBAC的不一样,所以无从谈角色的动态职责分离。为了让Spring Security实现真正意义上的RBAC,需要自定义图4-13的最后一层过滤器FilterSecurityInterceptor,命名为MyFilterSecurityInterceptor,该过滤器实现Filter接口并继承AbstractSecurityInterceptor父类。MyFilterSecurityInterce-Ptor通过调用AuthenticationManager对象完成对用户信息的认证,没有通过认证的用户将重定向到登录页面,若通过认证,则调用Access
41、DecisionManager对象完成用户授权。AccessDecisionManager通过对比用户拥有的权限和被访问受保护Web资源所需要的权限,来判断用户是否可以访问该Web资源,若授权成功,则响应该Web资源给用户,若授权失败,则将提示用户无权访问该受保护资源。3.4.1 Spring Security扩展类图图3-11Spring Security扩展类图中以“My”开头并且用红色椭圆选中的类均是自己实现的扩展类,它们分别是MyInvocationSecurityMetadataSource、MyFilter-SecurityInterceptor、MyUserDetailsServ
42、ice、 MyAccessDecisionManager和TbUser对象。(1) MyInvocationSecurityMetadataSource:该类的主要功能是创建资源和权限的映射Map对象,Key为资源(Resource),Value为权限(Authority)集合,表示访问该资源所需要的权限集合。该对象主要需要实现的方法是loadDefinedResource(参见图3-12具体实现),该方法在该类初始化时调用,创建Map对象。该类的另一个主要方法是getAttributes(参见图3-13具体实现),该方法主要实现根据资源名称获取该资源所需的权限集合。(2) MyFilterS
43、ecurityInterceptor:拦截器类,继承AbstractSecurityInterceptor,请求经过该拦截器时,通过调用beforeInvocation方法完成对用户信息的认证和授权。认证时调用MyUserDetailsService对象获取用户信息,认证失败则重定向到登陆页面,认证成功则调用MyAccessDecisionManager对象完成用户授权,授权失败则重定向到失败处理页面,授权成功则显示请求资源。(3) MyUserDetailsService:认证管理器依赖的认证提供者类,主要实现用户信息认证。该类的主要方法loadUserByUsername(参见图3-14具
44、体实现),根据提交的用户名获取用户对象,若获取用户对象为null则抛出异常,该异常被异常处理类处理后重定向到登陆页面;若获取的用户对象不为null,则返回该用户对象给认证管理器,进行密码认证。(4) MyAccessDecisionManager:授权管理器类,主要实现用户授权。该类的主要方法decide(参见图3-15具体实现),遍历用户拥有的权限,若含有被访问资源所需的权限则返回空,将显示被访问资源;若不含,则抛出异常,该异常被异常处理类处理后重定向到access_denied.jsp页面。图311 Spring Security扩展类图3.4.2 Spring Security关键类实现
45、1) MyInvocationSecurityMetadataSource关键代码实现图312 MyInvocationSecurityMetadataSource的loadDefinedResource方法实现图313 MyInvocationSecurityMetadataSource的getAttributes方法实现(2) MyUserDetailsService关键代码实现图314 MyUserDetailsService的loadUserByUsername方法实现(3) MyAccessDecisionManager关键代码实现图315 MyAccessDecisionMana
46、ger的Decide方法实现3.5 安全平台实现物业管理系统安全平台主要包括两个部分:系统权限的配置管理,用户请求权限控制。系统权限的配置管理是一个完整的相对独立的子系统,可以实现对系统资源、权限、角色、用户组、用户等信息的灵活配置;用户请求权限控制是一个实时运行的访问控制系统,会拦截每一个用户请求,对其实施权限控制。3.5.1 配置管理权限的配置管理子系统可以对资源、权限、模块、角色、用户组、用户信息等进行增删改操作,以及为权限分配资源、为角色分配权限、为角色分配模块、为用户配置角色和用户组等配置,以实现系统权限控制信息的灵活配置。图3-16、3-17、3-18分别显示了资源管理页面、角色管理页面、用户管理页面。图316 资源管理页面(资源列表)图317 角色管理页面(给角色分配权限)图318 用户管理页面(创建用户)3.5.2 实时控制安全平台的实时控制是通过Spring Security框架的拦截器实现,对每个用户请求进行权限判断,若符合权限要求则允许访问,否则拒绝访问。图3-19显示的是物业小区管理员单击“添加业主”按钮时返回的访问拒绝提示页面。因为物业小区管理员只拥有业主信息查看权限,并无权限添加业主信息,所以请求添加业主的jsp页面时,访问被