APP下载

基于电网业务的WEB端通用授权机制研究与实现

2020-12-13单婧婧

电子元器件与信息技术 2020年9期
关键词:代码界面对象

单婧婧

(东方电子股份有限公司,山东 烟台 264000)

0 引言

随着电网业务及信息化的不断发展,越来越多的B/S模式系统被开发并部署于III/IV区,该类系统不需要客户端安装任何软件,通过浏览器即可使用系统,简单方便。与此同时,系统对信息安全提出了更高的要求,因此需要一系列安全手段来保证系统信息的机密性、可靠性和完整性[1]。该类系统需求变化频繁,如果对权限的控制每次都要开发对应的授权功能,且要改动已有业务代码,则费时费力,且会大大降低开发效率。因此需要研究并开发一套通用的权限控制机制,当用户系统权限需求变更后,通过统一权限管理界面配置后,只需修改少量业务代码,即可完成用户的业务相关权限控制。

1 权限管理现状

目前比较成熟的权限管理系统大都是基于角色的访问控制,即RBAC(Role-based Access Control)[2-4],该机制主要包含角色、用户和资源对象三大部分。其中资源对象可理解为需要权限控制的对象,比如系统功能菜单、按钮等,这类资源的访问控制与角色关联,特定角色访问特定资源,而用户可以分配角色,从而使用户具备了访问对应资源的权限[5]。一个用户可以拥有多个角色,同样一个角色可以分配给多个用户。基于该思想,已经开发实现了基本的权限管理功能,能够对页面菜单以及页面内的按钮进行控制。

2 通用业务授权的分析与设计

2.1 数据库表设计

根据功能需求,设计需要授权的业务对象类型表、业务对象数据源表、记录授权结果的业务对象授权表。①业务对象类型表。用于记录要授权的对象类型描述及结构,如子控制区域、SVG图形、供电所、变电站、责任区等。TYPE:业务对象类型代码,如2,5,6,7,10。NAME:业务对象名称,与代码对应,如SVG图、变电站、责任区、CIM树等。FLAG:当对象全部未授权时,默认有访问权限设置1,默认无访问权限设置为0。ISTREE:是否为树形结构,1:是,0:否。SELECT_MODE:树节点选择方式,只针对树形结构起作用。1:子节点选中时父节点自动选中;父节点选中时子节点不自动选中;2:父节点选中时子节点自动全选中,子节点选中时,父节点不自动选中;3:父子级联选中,父节点选中自动选中子节点,子节点选中也自动选中父节点;4:多选,父子无关联;5:单选。REMARK:备注信息。②业务对象数据源表。用于存放需要进行授权的各类型业务对象数据源,如子控制区域数据,各类变电站,责任区等。③业务对象授权结果表。用于记录角色与控制对象授权结果。另外,还有系统原有的角色表、用户表、角色用户关系表。

2.2 业务流程

要实现对业务对象的权限控制,需要三个步骤:数据准备、界面授权、业务控制。

(1)数据准备。系统初始化时,根据实际应用,初始化业务对象类型表数据;基于业务对象类型,将各类型对应的业务对象数据插入到业务对象数据源表中,可手工插入,或者编写sql(从现有表中抽取数据)自动执行插入,因为涉及到源数据更新问题,推荐sql方式插入。

(2)界面授权。数据设置完成后,到界面进行授权。根据角色,选择业务对象类型,自动显示对应源数据,根据业务需要,从源数据中选择可访问的内容进行授权。

(3)业务应用。各个业务模块实现中,对于有权限要求的业务对象数据调用统一权限访问接口,获取当前登陆人员对应权限,控制数据显示,如对于子控制区,只显示用户可访问的子控制区列表,或者判断是否有权限操作某子控制区。

3 系统实现

3.1 实现技术

通用业务授权系统部署在Tomcat服务器,实现使用eclipse开发工具,基于Spring+iBatis+DWR+Ext整合框架进行开发,数据库采用Oracle。

Spring是一个广为流行的开源的Java应用程序开发框架,是为解决企业应用程序开发复杂性而创建的轻量级、一站式解决方案。通过依赖注入模式,将依赖关系从编码中脱离出来,可以用简单的组件组装复杂的应用,同时,大大降低了组件之间的耦合,极大地改善了代码的可重用性,实现了组件真正意义上的即插即用。

iBatis是一个O/R Mapping解决方案,实现了POJO(Plain Ordinary Java Objects,即简单的普通Java对象)与关系库SQL之间的映射。通过iBatis,可以实现数据库表与代码之间的松耦合。

DWR(Direct Web Remoting)是一个WEB远程调用框架,根据Java类来动态生成JavaScrip代码,利用这个框架,可以在客户端利用JavaScript直接调用服务端的Java方法并将返回值给前台JS,就好像直接在客户端本地调用一样。

ExtJS是一个Javascript编写的用于创建前台用户界面的AJAX框架,提供了RIA开发所需的所有常用界面组件。通过ExtJS,可以快速、轻松地创建丰富多彩的客户端应用,并大大降低开发的前台工作量。

3.2 授权界面

进入系统角色管理界面,选择角色,点击工具按钮进入应用授权窗口。在窗口中选择业务对象类型,根据类型表判断使用列表还是树形结构显示源数据。根据业务需要,选择对应角色有权限的业务对象添加到权限列表中,点击确定完成授权,拥有该角色的用户登陆系统后即可访问所授权的业务对象。

3.3 对外接口

系统封装多个DWR接口,供业务模块调用,开发人员可根据实际权限需求,调用对应接口获取权限控制信息,下面列出几个典型接口描述:

(1)获取当前用户可访问的应用列表

输入:应用类型或应用类型_层级,字符串格式,如5。

输出:当前登录人员可访问的对象列表,对象数据格式。

(2)获取某个用户可访问的应用列表

输入:用户代码,字符串格式,应用类型或应用类型_层级,字符串格式。

输出:用户可访问的对象列表,对象数据格式。

(3)检查某用户是否有权限访问某应用

输入:用户代码,字符串格式。

业务对象类型,字符串格式。

业务对象代码,字符串格式。

输出:true/false。

4 结论

本文在已有权限系统基础上,结合业务实际需求,开发一套通用的业务对象授权系统,解决现有电网业务中如子控制区域、变电站等多种业务对象权限控制需求。该系统同样适用于其他WEB权限业务相关权限管理,具有较高的推广性。目前业务对象源数据通过人工或sql方式维护,下一步考虑实现源数据维护界面,加强其通用性。

猜你喜欢

代码界面对象
不同截面类型钢管RPC界面粘结性能对比研究
微重力下两相控温型储液器内气液界面仿真分析
晒晒全国优秀县委书记拟推荐对象
国企党委前置研究的“四个界面”
攻略对象的心思好难猜
图说车事
神秘的代码
一周机构净增(减)仓股前20名
一行代码玩完19亿元卫星
近期连续上涨7天以上的股