数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

PB用户权限管理[1]


发布日期:2022年06月29日
 
PB用户权限管理[1]

方案一多用户多用户方法

关于用户权限的问题我认为这个问题在PB的开发中都可能遇到各人有各自的解决方法我以前也用过各种方法来实现但是总体而言安全性方便性灵活性等等方面考虑的话下面的的方案是一种比较好的方案

以下就该方案做详细的说明

基本知识

现在主要的DBMS包括ORACLE SQL ServerSybase Adaptive Server Microsoft SQL Server xx等在这些DBMS中都有自己完整的用户管理模式一般都以下列方式进行

登录用户主要用来提供连接到数据库服务的

角色用户将登录用户划分为某些组这些组拥有各种不同的数据库操作权限而一个登录用户可以扮演不同的角色

组管理主要在Microsoft SQL Server x中中已经采用ORACLESybase的用户管理方式

DBMS提供了这些用户管理的基本方式并各自对表视图过程触发器等有各自的审计及管理的方法关于这些内容请参考相关书籍

在实际的应用中如果实际情况允许可以对实际的所有用户建立一个登录用户(帐号)并对所有的帐号进行严密的权限管理但是如果用户的数量是不固定的而且可能有上百个那管理的复杂程度及难度就可想而知了

所以在一般的应用系统中很少直接采用DBMS提供的用户管理模式而进行相关的扩充

实现方法

当前比较可行的方法的要点是

所有的实体(表视图等等)都由一个登录用户建立(dbo)但是该用户不拥有连接及操作这些实体的权限(InsertDeleteUpdate等等)

对所有的实际用户进行分类归纳为几个具体的角色(实际角色)

一种实际角色对应一个登录用户建立帐号系统进行角色分配权限设置

在Application中某用户连接时根据所扮演的实际角色以对应的登录用户登录

根据对应表中对该用户的可用模块(功能)进行适当处理使用户只在定制的]允许的范围内进行功能操作及数据库操作

根据以上几点在一个具体的应用中涉及到的开发工作包括

表设计

实际角色(组)分析

建立应用用户帐户表该表记录了该用户所属的组建立用户组表

建立一个通用连接用户(只能检索用户帐户表)所有的应用用户初始都以该用户连接数据库然后检索根据实际登录的用户及用户所属组以该组对应的登录用户进行连接

建立模块(功能)表建立用户用户组与该表的对应表即某用户到底能够进行什么样的操作

功能设计

建立模块(功能)管理器管理所有可用模块的相关信息

建立用户用户组权限管理器管理某用户(组)能够使用的功能

用户启动应用录时将按照以下过程进行

○ 所有用户都以固定的连接用户进行初始连接

→ 用户输入自己的代码及口令根据帐户表确认该用户

→ 得到该用户所属的组(即可以连接到数据库的登录用户名称)等信息

→ 重新连接到数据库分配角色

→ 根据角色进行数据分片(参考数据分片技术)

→ 检索该用户所属组及该用户可用的模块信息及布置调整菜单或界面

● 打开主窗口结束

方案二单用户多用户模式

所谓单用户多用户模式指数据库的登录用户模式指所有应用都以统一的用户登录 该用户拥有所有表视图过程函数等的所有操作权限而这些对象都被dbo所创建和拥有可以将这些用户称为应用用户(存放在某表中)而登录到数据库的这个用户即为模式用户 实际上为了防止系统外数据登录可增加一个联接用户该用户只能读取一张表该表记录了模式用户的登录参数(具体部分可以加密存放) 这种单多用户方式在大型的mis系统中由于其实现简单思路清晰所以应用是相当多的 单其优缺点是明显的

优点

■设置简单特别是授权可以比较轻松地实现

■管理简单只要维护一个模式用户就可以了

■对开发人员是透明的即开发用户以dbo方式登录就可以了

缺点

■比较危险一旦该模式用户洩密将造成巨大损失

■无法进行进一步的权限设置因为不知道到底某应用用户到底具有那些权限

改进(多用户多用户方式)

可以按照实际业务系统的分类划分为几个模式用户如库房给库房一个模式用户 财务则给财务另外一个模式用户这些模式用户对不同的对象拥有不同的权限从而防止了破坏不相关的业务系统数据的可能

在实际的使用中在登录时可以根据该用户所在的部门进行相关的联接设置

方案三通过菜单来控制用户权限 在PowerBuilder中是不支持动态菜单的一个菜单只能先做好然后在程序中调用或修改它的属性因此对于动态菜单的实现只能通过打开一个个窗口实例来实现可以通过修改某菜单项的tag属性在菜单项的clicked事件中打开该tag所指示的窗口即可

[] []

               

上一篇:PB用户权限管理[2]

下一篇:PB中使用FORMULA ONE入门介绍[2]