一种通用的应用系统权限管理的实现方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2000-10-09

基金项目:国家863/CIMS 并行工程主题资助项目(863-511-930-009)

一种通用的应用系统权限管理的实现方法!

朱建江,王宁生

(南京航空航天大学CIMS 工程研究中心,江苏南京210016)

摘要:从数据库访问权限和应用层各个子系统访问权限两个方面,介绍了一种用于管理信息系统的通用权限管理

方法,并给出了相应的功能模型(DFD )

和信息模型(ER 图)及部分程序设计代码。关键词:系统权限管理;管理信息系统

中图分类号:TP309.2文献标识码:A 文章编号:1001-3695(2001)07-0062-02

A General Method for the Right Management of Application System

ZHU Jian-jiang ,WANG Ning-sheng

(CIMS Research Center ,Nanjing Uniuersity of Aeronautics and Astro nautics ,Nanjing Jiangsu 210016,China )

Abstract :From the two aspect of the accessing right of database and sub-system ,a generaI right management method for management information sys-tem is presented ,and the correspondent function modeI

(DFD ),information modeI (ER diagram )and a part of program code are aIso given .Key words :System right management ;Management information system

!前言一套管理信息系统设计、开发的最后一个步骤就是应用系统的权限管理。所谓权限管理就是应用系统的不同用户,拥有与其角色相配的对特定几个应用子系统(或模块)的不同的操作权限,如对于某模块,系统超级用户拥有“插入、修改、删除、查询”等权限,而对于普通用户仅拥有“查询”权限。应用系统的权限管理从功能模型和信息模型的角度可分为两个层次,即功能层的访问权限管理和数据库访问层的权限管理。目前多数管理软件仅做到应用系统功能层上的权限控制,而没有做到数据库访问层的权限控制。功能层上的权限管理主要有两种,一种是仅控制到应用子系统,即不同的用户可以访问不同的应用子系统的“窗体”,而没有控制到“窗体”上的各个功能菜单。这种做法比较简单,仅在管理信息系统技术发展的初期或非常简单的应用系统中采用,目前多数已经弃之不用。另一种是控制到应用子系统“窗体”上的菜单层,即拥有不同角色的不同用户可以访问不同的应用子系统“窗体”,而且对于窗体上的不同功能菜单拥有不同的权限。这种处理方式是当前系统权限管理技术的主流。然而这种处理方式并没有控制到后台数据库基本表;即什么角色的用户可以对哪些基本表拥有哪几种操作权限。由于仅控制到功能层,并没有给软件用户的系统管理员来说提供一个分配数据库基本表的访问控制界面,系统管理员设置角色权限,给系统用户分配

角色等操作不得不通过手工写SOL 语句来实现,

因此对于系统管理员来说很不方便,尤其是当系统管理员需要分配多个角色、用户时。本文提出一种通用的管理到应用系统功能层和数据库访问层的权限管理方法,对于功能层管理到“窗体”的菜单层,对于数据库访问层管理到基本表和基本表的“增加、删除、修改、查询”等基本操作权限。

"

应用系统权限管理的功能模型设计

[1]

功能模型的表达采用数据流程图—Data FIow Diagram

(DFD )。应用系统的权限管理从功能上可分为权限管理基本信息维护、角色管理和用户管理三个处理过程,其相关的数据流、数据存储以及输入、输出关系如图1

所示。

图1应用系统权限管理功能模型(DFD 图)

#应用系统权限管理的信息模型设计

信息模型的表达采用“实体—关系图(ER 图)”。在工程

领域,信息模型的设计应满足“三范式”,即非键属性既不函数

依赖于主键,也不传递依赖于主键[2]。在权限管理的信息模

型设计之前首先进行实体的标识。对应用系统功能层和数据库访问层进行权限管理的信息模型应包含以下实体:用户、角色、数据库访问权限、基本表、应用子系统、功能模块访问权限、模块菜单。

系统权限管理信息模型分为两个部分(见图2):对数据库访问权限的管理和对应用系统功能层的访问权限管理。数据库访问权限的管理包括用户表、角色表、数据库访问权限表、数据库基本表。其中用户表用于存储应用系统的所有用户;角色表用于存储所有角色;数据库基本表用于存储应用系统中的所有数据库基本表;对于一个特定的角色可访问多个应用系统的数据库基本表;一个数据库基本表可被多个角色访问,即角色与数据库基本表之间是“多对多”的关系。在数据库设计中这种“多对多”关系是“非确定的”,必须

予以消除,因此引入“中间实体”、“数据库访问权限表”进行处理。给一个角色分配了权限后,就可将这个角色分配给多个用户,角色表和用户表之间是“一对多”的关系。

图2系统权限管理信息模型(ER图)

功能层的访问权限管理包括用户表、角色表、应用子系统表、模块菜单表、功能模块访问权限表。其中用户表和角色表分别存储系统的用户信息和角色设定信息;应用子系统表存储应用系统的所有子系统(即应用窗体)信息;模块菜单表存储相应模块的菜单信息,通常包括对该模块的“增加、删除、修改、查询”几个基本操作。由于角色和应用子系统两个实体间是“多对多”的关系,因此也需引入中间实体“功能模块访问权限表”。角色名和子系统代码在功能模块访问权限表中作“外键(FK)”,同时为将权限管理到模块菜单层,也将模块菜单名称作功能模块访问权限表的“外键(FK)”,并将模块菜单名称、角色名、子系统代码合起来作“主键(PK)”,以满足“三范式”。给一个角色分配了权限以后,就可以将这个角色分配给多个用户,角色表和用户表之间是“一对多”的关系。

在图2的信息模型中,由于角色名既是数据库访问权限表的“外键(FK)”,又是功能模块访问权限表的“外键(FK)”,因此对于一个特定的角色而言,可以在数据库访问权限表中为其分配所能操作的应用系统数据库基本表及相应“增加、删除、修改、查询”权限,同时可在功能模块访问权限表中为其分配所能操作的子系统及相应功能菜单名,即一个角色关联了数据库层和应用系统功能层的访问权限控制。将这样一个角色分配给某个特定用户,此用户就拥有了这个角色的权限。

图2中的系统权限管理信息模型综合考虑了数据库层和功能层权限管理两个方面,既可单独用于数据库层的权限管理,也可用于应用功能层的权限管理,同时又可用于两者的综合管理,在应用中根据需求采用图2中系统权限管理信息模型的相应部分即可。

!应用系统权限管理的功能实现

为了从数据库层和应用功能层两个方面实现系统权限管理,应用系统的权限管理子系统应包含如下模块:(l)角色管

理,包括增加角色、删除角色、角色的权限设定与修改、角色查询;

(2)用户管理,包括增加用户、删除用户、用户的口令修改、用户查询;

(3)权限管理信息模型中相关表的维护,包括数据库基本表的维护、应用子系统表的维护、模块菜单表的维护。

系统权限管理子系统的实现采用客户/服务器模式,对于客户端和服务器端所负担的任务划分如下:(l)对于用户管理和角色管理中需管理到数据库层的功能,如在后台数据库增、删、改角色、用户,在数据库后台的角色权限设定,采用数据库存储过程,利用后台数据库处理;(2)对于客户端表示层的界面功能以及系统登录时的身份验证及其相应的权限实现,采用客户端开发工具来实现。

本文采用PowerBuiider6.5和Oracie7.3.3作为客户端开发工具和数据库服务器,给出数据库端的权限设定存储过程代码和客户端的数据库连接函数代码。

(l)后台数据库端的权限设定存储过程[3]

说明:对于用户设定的一个角色,先由客户端为其分配其所能操作的数据库基本表和基本表的操作权限,同时设定此角色所能访问的功能模块及模块菜单,提交到“数据库访问权限表”和“功能模块访问权限表”后,再由客户端调用数据库权限设定存储过程,进行数据库端的角色权限设定。

采用技术:由于PL/SOL的设计采用早期联编(Eariy bind),不支持DDL语句,因此采用动态SOL技术,调用Oracie的DBMS SOL包进行处理。

create procedure DB RIGHT SET(p roie name IN DB RIGHT.ROLE-NAME%TYPE)IS

p db tabie name varchar2(l5);/!应用系统的数据库基本表名称!/

p db oper right varchar2(l0);/!基本表的操作权限,如seiect,deiete,update,insert等!/

v cursorid number;/!动态SOL游标的标识号!/

v grantstring varchar2(l50);/!授权字符串!/

v numrows integer;/!动态SOL游标的行数!/

Begin

/!定义游标,在“数据库访问权限”表中取此角色名可访问的数据库基本表和相应的操作功能!/

Deciare CURSOR c roie right IS(下转第92页)

相关文档
最新文档