日期:2013-11-14  浏览次数:20395 次


作者:BALLOONMAN2002  2004年6月26日

本文拟结合POWERBUILDER言语,简述如何在传统C/S使用系统当中无效建立权限管理体系。

何谓权限管理体系?就是如何控制操作使用者对软件功用和系统数据的访问权限的各个方面。传统的C/S使用系统,多是“前台使用程序+后台数据库表”两部分,这样就决定了我们考虑权限管理体系就必然要考虑两方面的内容:

1、用户在前台的功用权限:即该用户能够使用哪些菜单或窗口功用,例如:张三只能使用数据录入功用,不能使用管理审批功用;

2、用户在后台的功用权限:即该用户能够对库表具有哪些读、取访问权限,例如:张三对于x_table表只要读权限,没有写权限;

能否上述两方面权限管理就足够了呢?答案能否定的,由于从使用角度来考虑,还需求对用户的数据访问权限进行控制,例如:张三属于A分局,李四属于B分局,张三、李四各录入一条数据,那么在查询时显然张三只能查询到其本人录入的数据记录,而不允许其查询到李四录入的数据记录,或者只能查询而不允许修正,因此这就引出了第三方面的权限管理内容:

3、用户在使用的数据访问权限:即该用户能够对哪些数据具有哪些访问权限;

下面我们逐一来了解如何实现上述三个方面的权限管理:

1、前台功用权限:

谈到前台功用权限,我们要建立下面几个概念:

岗位:是指用户具体担任的任务分类,如:数据录入岗、文书审批岗、系统维护岗等;

功用:是指用户能够使用的软件功用,可以通过菜单或窗口来控制,但由于一个系统当中窗口通常数据量庞大,控制用户使用哪些窗口不太实际,因此我们通常菜单控制即可;

工号:是指具体用户登录系统所用的用户ID;

上述三个概念的互相关系如下:

一个岗位可以对应多个功用菜单;

一个功用菜单同样可以对应多个岗位;

一个工号只能属于一个岗位;

进而我们可以设计以下用户登录流程:

(1)用户ID登录系统后读取对使用户表查看其所在岗位;

(2)查找该岗位对应可以使用哪些菜单;

(3)将用户能够使用的菜单和系统实际菜单逐一比较,屏蔽不允许其使用的菜单;

这里面由于涉及到菜单的遍历,需求使用到一些PB的使用技巧,详见另外一篇文章《浅谈如何利用PB实现动态添加菜单》,此处不再赘述。

这样通过上述三者关系,建立起一个用户工号到底能够使用哪些菜单,不能使用哪些菜单。为何要如此复杂,为何不直接定义每个工号能够使用哪些菜单呢?那样的话,显然系统冗余太大,形成资源浪费,不符合规范化要求。

2、后台库表权限:

后台库表权限次要是依据前台工号在后台数据库建立相应的帐号(LOGIN)、用户(USER),并依据一定的规则产生对应密码,并赋予其不同的角色(ROLE)、不同库表的不同读、写权限,由于这部分与所采用的后台具体数据库密切相关,因此本文不再详述。

3、使用数据权限:

使用数据权限的实现,次要通过各类数据表当中必须引入数据记录的录入或产生单位代码和操作员工号ID,当用户访问相应记录时,首先比较当前用户ID及其所在单位,能否与数据记录的产生操作员ID及其单位代码分歧,这个问题说起来简单,但实际用PB言语实现起来需求讲究一定技巧,要充分借助“承继”这一特性,尽量高效、通用。

 

如需求进一步材料,请联系QQ:27855043,MSN:WEIYIN2001@MSN.COM

如有不当之处,敬盼您的指点。