通用权限管理系统设计与实现

2014-02-27 02:15张立平
教育教学论坛 2014年25期
关键词:菜单组件管理系统

彭 耘,张立平

(武汉铁路职业技术学院,湖北 武汉 430205)

对于任何一个信息管理系统,权限管理模块是必不可少的一部分,对于信息系统,其权限管理在功能上是相似的,并有几个理论模型。每一个系统都重复开发权限管理模块,势必浪费大量的时间、人力和物力。因此实现一个方便、灵活、可扩展的通用权限管理系统将在很大程度上节约开发时间,降低人力、物力成本,对信息管理系统的设计和实现具有重要意义和应用价值。相对于传统的访问控制,RBAC模型引入了角色层。在RBAC中,权限授予角色,角色授予用户,这种机制使得它有授权方式简便高效、维护简便等优点。特别地一点是,RBAC实现了人员与权限的分隔,简化了各种环境下的权限管理,更重要的是可以用RBAC的思想设计一个通用的权限管理系统。RBAC模型的缺点是:其一,进行权限校验时需要不断的遍历和递归,造成了性能的影响;其二,角色和角色、用户和角色之间的关系比较复杂。本文通过对RBAC模型进行改进,设计了一种通用的权限管理模型,可以较好地解决这两个问题。

一、通用权限管理模型设计

图1 通用权限管理模型

权限管理模型是权限管理的基础。本文以RBAC96模型中的RBAC0模型为基本模型,对权限、角色、用户和角色的关系做了改进,设计出一个通用的权限管理模型。如图1所示:

权限模型为三个实体和两个关系:用户U、角色R、权限P;PR为权限P和角色R之间为多对多关系,UR为角色R和用户U之间为一对多关系,会话sessions是用户与激活的角色集合之间的映射,隐含在用户集U中。权限和权限之间存在包容关系,如对某项资源的编辑权限包含查看权限,为了实现通用性,模型中设定权限p的元素之间是平行关系,权限之间包容关系由权限名来表示,由授权人员处理包容关系。权限依据功能模型划分为组,以方便权限管理。角色R被定义为近似职位关系。这样定义的好处在于因为职位的权限变动很少,在系统移交给用户之前即可以完成定义,减少最终用户使用的复杂度。权限管理包括PA、UA和RA。PA为角色权限分配,由开发人员配合最终用户完成,UA为用户角色分配,由最终用户独立完成,RA为角色用户分配,配合用户完成用户角色分配。

二、通用权限管理系统设计

1.系统功能设计。根据权限模型和需求分析,通用权限管理系统由一系列组件和模块构成。组件提供给业务系统使用,包括认证组件、用户组件、权限检查组件和用户菜单组件,模块实现权限管理系统自身管理。其体系结构如图2所示:①认证组件,包括用户登录和单点登录。用户登录时输入用户名、密码和验证码,验证成功后,建立session,将用户信息保存在session中,并记录用户登录日志。用户登录三次失败后锁定系统5分钟。单点登录为URL单点登录方式。首先双方协商key,利用key进行校验,校验成功同样建立session,将用户信息保存在session中,并记录用户登录日志。②用户组件,提供用户自助更改信息和密码的功能。③权限检查组件,将业务系统的页面分为三种类型:非认证页面、认证页面、含特权页面。将权限检查组件插入后两种页面中,则无须编写任何代码完成权限检查。④用户菜单组件,根据用户权限按最小特权原则生成菜单,不同角色的用户菜单内容不同,包括横向菜单和纵向菜单两种类型。⑤授权管理模块,包括PA、UA和RA。实现权限和角色多对多关系管理以及角色和用户一对多关系管理。⑥菜单管理,维护业务功能权限和页面之间的关系,以及菜单外观是用户菜单生成的依据。⑦权限分类管理、权限管理、用户管理、角色管理、日志管理,实现权限分类、权限、用户、角色、日志的查看、新增、修改和删除等功能。

2.数据库设计。依据系统的功能需求以及功能设计,设计数据库模式如下:权限分类表(CategoryID,Description);权限表(PermissionID,Description,CategoryID);角色权限表(RoleID,PermissionID);角色表(RoleID,Description);用户角色表(UserID,RoleID);用户表(UserID,UserName,Password,DepartmentID); 日 志 表(OPTime,Url,OPInfo,User-Name,UserType,UserIP); 菜 单 表(NodeID,Text,ParentID,ParentPath,Location,OrderID,Url,PermissionID,ImageUrl)。

图2 通用权限管理系统体系结构

三、通用权限管理系统的实现

权限管理系统采用B/S模式,使用ADO.NET技术实现与多种数据连接,架构上采用三层模式,即表示层、业务逻辑层和数据访问层的实现。

1.数据层及缓存。数据层实现与数据库交互、数据缓存和持久化,与业务逻辑层进行交互,实现与多种数据库连接,ADO.NET对此提供了良好的支持,并且易于实现。数据库操作对系统资源消耗很大,业务系统在运行时权限检查操作十分频繁,但是角色的权限变动不大,因此将角色权限表缓存应用服务器的内存中,而不是每次都去访问数据库。

2.表示层。表示层包含一系列组件和系统自身的管理界面。为了避免对业务系统产生较大的改动,系统提供了权限检查用户控件,使用时只需将控件拖入需要权限检查的页面中,并修改权限ID的值即可,不需要改动业务系统代码。用户只属于一个角色,认证通过后,认证组件将用户角色也保存在会话中,用户权限检查实际上是角色的权限检查,在用户需要时,角色类提供程序调用接口实现。

四、通用权限管理系统应用中的优势

1.使用简单。系统利用RBAC中用户和访问权限逻辑分离的特点,简化了系统权限管理,同时简化了RBAC中RR的关系和RU的关系,降低了权限管理和系统维护的复杂性,使最终用户的学习时间和使用时间大大缩短,增加了系统授权的准确性,提高了系统的安全性。

2.通用性强。系统提供了多种数据库环境下的实现,并实现管理员对业务系统的用户、角色、权限信息的自定义功能,可以方便加入业务系统中实现重用,节省了大量的人力和物力。

3.集成简单。通常情况下,业务系统只需调用权限检查组件即可实现权限管理,甚至无需编写代码,复杂情况下,也可以调用用户接口提供的方法,实现权限检查,程序员无需关心权限模块中的代码就可以完成权限管理。

[1]沈海波,洪帆.访问控制模型研究综述[J].计算机应用研究,2005,(6):9-11.

[2]Ravi S.Sandhu,Edward J.Coyne,Hall.Feinstein,and Charles E.Role-Based Access Control Models[J].IEEE Computer,1996,29(2):38-47.

[3]丁仲,左春.用于RBAC权限管理的面向对象框架[J].计算机工程与应用,2005,(17):43-45.

猜你喜欢
菜单组件管理系统
无人机智能巡检在光伏电站组件诊断中的应用
基于James的院内邮件管理系统的实现
新型碎边剪刀盘组件
中国新年菜单
U盾外壳组件注塑模具设计
基于LED联动显示的违停管理系统
海盾压载水管理系统
本月菜单
风起新一代光伏组件膜层:SSG纳米自清洁膜层
基于RFID的仓储管理系统实现