摘 要 数据库应用程序需要管理大量相关的数据,对数据的操作一般都是需要一定的权限才能进行,特别是对数据的添加、修改和删除,所以设置用户权限是每个管理系统所必须具有的。
关键词 数据库应用程序; 数据; 操作; 权限
1 权限管理
数据库应用程序中存放着大量重要的数据,这些数据中有些只有系统管理员能操作;有些数据只有相关用户才能进行相应的修改工作,但没有添加和删除权限;有些数据用户既没有修改权又没有添加和删除权,只能查看。所以权限的管理对一个数据库应用程序来说是十分重要的。
以往数据库应用程序的权限管理一般都采用系统管理员将所需要的权限添加到权限表,并将权限分配给每一个用户。这种权限管理方法不够灵活,在权限数量较多的情况下给系统管理员增加了大量添加、修改和删除等权限管理工作。
利用Delphi应用程序的特点,使用角色表、角色权限表和用户角色表3个表来管理系统权限。先在角色表中预设教师、学生和系统管理3个角色(系统管理员默认具有所有权限),不够时由系统管理员根据需要添加和修改,在教师表中预设一个系统管理员的帐号,自动成为系统管理角色的成员。在应用程序界面显示前(即Form的OnShow事件中)将需要设置的所有权限自动添加到角色权限表中,然后由系统管理员将这些权限(以打勾的方式)分配给不同角色,再通过角色分配给每一位教师和学生。每个教师自动拥有教师角色,每个学生自动拥有学生角色。其他的角色由系统管理员添加,并分配给需要的教师和学生。
1.1 添加权限
为方便程序统一管理角色权限表中的权限,本系统在主界面显示前将菜单中的每个项目自动添加到角色权限表中,方法是为角色表中的每个角色遍历菜单中的每个菜单项目,并将这些菜单项目添加到每个角色中,供管理员分配使用,具体通过AddRoleRight过程实现,代码如下:
procedure AddRoleRight(ObjName: TObject);
var
MenuCol : Integer;
MenuTemp: TMenuItem;
// 定义递归过程,实现所有子菜单的遍历
procedure SearchSubMenu(Menu: TMenuItem);
var
MenuRow : Integer;
V : Variant;
begin
if Menu.Count=0 then begin // 是一个单独的菜单项
if Menu.Caption<>'-' then begin
with DMServerDB do begin
ADODataSetRole.First;
|