怎样对信息管理系统的权限进行动态分配

/ 2

怎样对信息管理系统的权限进行动态分配

吴红梅(茂名职业技术学院计算机工程系,广东茂名5250

摘要:信息管理系统开发过程中权限分配的问题历来是学生在开发实习过程中的难点,大部分的学生甚至连指导学生开发实习的老师都未必深入考虑过怎样才能给出一个相对合理完善的解决方案去实现对信息系统的权限进行动态分配问题。以“机房信息系统”为例,对动态分配权限进行分析与设计,深入讲解在信息管理系统开发过程中实现权限动态分配的基本解决思路。

关键词:动态分配;权限内容;信息系统;解决思路

引言:从事编程类与数据库类的计算机专业教学有几年,学校每次在这些课程结束时都安排至少两到四周的时间进行课程实习,而实习的内容不外乎是用现学的数据库与开发工具编写一系列的信息管理系统,如:成绩管理系统,仓库管理系统,工资管理系统等,其目的就是为了让学生模拟软件开发,使学生有一定的实践积累,并能更好地综合应用所学的开发工具去管理数据库。在开发过程中,很多学生意识到信息系统安全的重要性,所以基本在进入所开发的系统时都会设置登录界面。在登录界面中让用户输入用户名、密码、权限。对于用户名和密码,学生都能通过设置数据表去管理,而对于权限,学生甚至包括不少指导课程实习的老师都很少去考虑该怎样去管理它。

下面以“机房信息系统”为例,展示如何在开发系统的过程中实现动态分配权限。

“动态分配权限”的实现:

1机房信息系统功能与主体界面的介绍

主界面菜单操作涵盖了系统能实现的所有功能。接下来我们考虑如何设置用户的权限管理机房信息系统。

2机房信息系统权限动态分配的分析与实现

2.1分析。与对用户数据表的设置类似,用户数据表设置用户名称,用户密码等基本字段,对用户权限的管理同样也要设置权限名称与权限内容(即权限范围)。权限的名称可以自定义,例如对于机房信息系统而言,我们可以设置超级管理员,一般用户,机房操作员等,而怎样设置权限的内容呢?这才是这个数据表设置的关键所在。

这时候我们要考虑权限的内容实质指的是什么呢,仔细观察可以发现所谓权限的内容即该系统为具有不同权限的用户所赋予的对该系统的操作权利即为权限的内容。

如:超级管理员可以操作系统的所有功能。一般用户则只能浏览或查询机房的一些相关信息。而对于信息的管理:如对设备信息、故障信息、借还信息的管理,一般的用户则不应赋予它这些操作权限。机房操作员相对于一般用户来讲,由于是专门管理机房工作,除了具有一般用户的权限外,对机房基本信息(设备信息、故障信息、借还信息)的管理权限也应赋予给它,但是,对于用户信息及字典信息的管理,则不适合赋予给它。

通过对以上三种权限的分析结合主菜单的特点我们可以这样考虑:把对系统主体界面子菜单的操作权利设置成为权限的内容(因为对系统主体界面子菜单操作涵盖了系统能实现的所有功能)。如:对于机房操作员,由于不具备用户管理与字典管理的权限,但是它有对系统的其他操作的权限,所以我们可以设想把对系统的所有子菜单的操作设置成一串固定长度的字符串,这串字符串的字符由0或1组成,0表示相应位置的菜单操作无效即不能操作该菜单,1则表示相应位置的菜单操作有效即具备该菜单的操作权限。

如对于机房操作员,我们可以设立的权限内容为:1111111111100(13个0/1字符代表对机房信息系统13个子菜单的操作权利,并依次对应表2~1中子菜单由上往下的序号即1111111111100由左往右数第一个字符表示表2~1中“子菜单”列对序号为1的子菜单的操作权限,第二个字符则表示对序号为2的子菜单的操作权限,依次类推,由上往下共有13项子菜单,由于倒数第1、2两个字符对应的子菜单为用户管理与字典管理,机房操作员没有这个操作权限,所以均设置为0)。同理,我们可以设置超级管理员权限内容为111111111111111(超级管理员可以操作系统的所有功能),设置一般用户权限内容可以设置为1110001110000。而如果系统还要求有其他的权限类型,则可以根据实际需求进行对不同权限角色进行动态分配操作权限。

2.2数据表设计。通过以上的分析,我们可以设置权限数据表如下:

权限数据表名称:tqx,字段如下:

qxname(表示权限角色如系统管理员,机房管理员,一般用户等;数据类型:char)

qxcontent(表示权限内容,即指对机房信息系统13个子菜单的操作权限,数据类型:char(13))

3机房信息系统权限分配代码的实现

打开权限数据表tqx,读取权限内容,并把权限内容字符串从左往右逐个赋给公有变量数组UserQxArr(1To13)中的每个元素

DimRsQxContentAsNewADODB.Recordset

RsQxContent.Open"selectqxcontentfromtqxwhereqxname='"&UserQx&"'",mCnDB,adOpenStatic,adLockReadOnly,adCmdText

Fori=LBound(UserQxArr)ToUBound(UserQxArr)

UserQxArr(i)=Val(Mid(RsQxContent(0),i,1))

Nexti

RsQxContent.Close

SetRsQxContent=Nothing

EndIf

EndIf

根据在登录窗体中读取的权限内容及公有变量数组UserQxArr每个元素的值,对所登录的用户进行对系统主窗体操作的权限分配.然后在主窗体的load事件中调用该过程即可实现权限控制。

代码如下所示:

MnuuserCh.Enabled=UserQxArr(1)‘对序号为1的子菜单的权限控制

MnupwdCh.Enabled=UserQxArr(2)‘对序号为2的子菜单的权限控制

……….‘此处省略对序号为3到序号为12的子菜单的控制

MnudicManage.Enabled=UserQxArr(13)‘对序号为13的子菜单的控制

‘通过以上的代码即可实现机房信息系统权限分配

总结:以上案例的解决方案是在指导学生开发实习过程中的一点经验小结。通过对以上案例的分析,我们基本上了解权限分配的主体思路。而这种思路是完全可以移植到其他信息系统的开发上的,关键是在信息系统开发前弄清楚系统的主要功能,把触发实现这些主要功能的系统元素找出来(如菜单、命令按钮等),然后把这些元素按照一定的顺序排好,具有对某功能的操作权限时,我们设置为1,否则为0,然后按顺序把这些元素对应的操作值写在一起即成为所分配的权限角色对应的权限内容。用户登录系统时,读取用户名称、密码、权限名称与权限内容,然后再根据权限内容初始化所登录用户进入的主体界面,从而实现对系统的权限进行动态分配。

参考文献

[1]温贤发.VisalBasic6数据库程序设计高手[M].北京:科学出版社,2001.

[2][美]Silberschatz.数据库系统概念[M].北京:机械工业出版社,2002.

[3][美]Satzinger.系统分析与设计[M].北京:机械工业出版社,2006.

作者简介:吴红梅(1979~),女,广东茂名人,助教,软件工程硕士,研究方向:计算方法。