首页 基于菜单资源的权限分配

基于菜单资源的权限分配

举报
开通vip

基于菜单资源的权限分配基于菜单资源的权限分配 Vol . 21 ,No . 8 第 21 卷第 8 期计算机应用 2001 年 8 月Computer Applications Aug. ,2001 () 文章编号 :1001 - 9081 200108 - 0254 - 02 基于菜单资源的权限分配 吕振洪 ()浙江师范大学 计算机学院 ,浙江 金华 321004 摘 要 :叙述如何充分利用菜单资源进行功能权限 、数据权限分配 ,并以功能权限分配为基础 ,按 一定的方式组织数据权限的数据 ,实现功能权限和数据权限分配有机地结合 ...

基于菜单资源的权限分配
基于菜单资源的权限分配 Vol . 21 ,No . 8 第 21 卷第 8 期计算机应用 2001 年 8 月Computer Applications Aug. ,2001 () 文章编号 :1001 - 9081 200108 - 0254 - 02 基于菜单资源的权限分配 吕振洪 ()浙江师范大学 计算机学院 ,浙江 金华 321004 摘 要 :叙述如何充分利用菜单资源进行功能权限 、数据权限分配 ,并以功能权限分配为基础 ,按 一定的方式组织数据权限的数据 ,实现功能权限和数据权限分配有机地结合 ,增强了角色管理的透明 度 ,从而提高数据库的安全性 。 关键词 :菜单资源 ;周游算法 ;功能权限 ;数据权限 ;角色 中图分类号 : TP311 . 131文献标识码 :A 管理员来说他必须清楚知道应用系统的每个功能使用哪些数 1 引言据对象等 。其实系统开发者可以在 RBAC 模式的基础上 ,把 应用程序的功能权限和数据权限紧密结合起来 ,实现数据权 随着应用的发展 ,企业使用 MIS 系统越来越普及 ,已经由 限的透明性 ,减轻系统管理员的负担 。 原来的减轻计算工作量向规范管理 、降低成本等方向发展 。 本文叙述如何充分利用菜单资源进行功能权限 、数据权 开发的 MIS 系统涉及多部门 、多方向 ,包含有许多不同部门使 限分配 ,并以功能权限分配为基础 ,按一定的方式组织数据权 用的相对独立的应用子系统 ,但子系统之间有一定的数据关 限的数据 ,实现功能权限和数据权限分配有机地结合 ,增强角 联性 ,要求多个用户能同时访问一个公用数据库 。如何控制 色管理的透明度 ,从而提高数据库的安全性 。 用户的访问权限 ,保障数据的安全性 ,这是开发 MIS 系统必须 解决的基本问题 。 解决该问题主要涉及两个方面 : ?数据权限 ,规定对数据 对象有何种操作权限 ,通过对访问数据库对象的限制来保证 2 基于菜单资源的功能权限分配数据库的安全性 ; ?功能权限 ,规定使用 MIS 系统时哪些功能 一个 MIS 系统 ,主要通过菜单系统来构成系统的功能界 可用 ,哪些功能被禁止 ,通过限制用户使用 MIS 系统的功能来 面 。而分配 MIS 系统的功能权限时 ,处理对象主要是依据菜 间接保证数据的安全性 。对一个多用户的 MIS 系统应该把这 单资源 。我们以 Delphi 系统为例 ,说明一种简单的基于菜单 两者有机的结合起来 ,才能保证数据库的安全性 。 资源的功能权限分配方法 。 管理用户对资源存取的传统方法通常是直接为每个用户 2. 1 Delphi 系统的菜单资源 赋予一组许可 。它的缺点是一旦组织内发生人员变动 ,管理 员都要重设用户许可等 。基于角色的存取控制 RBAC 是一种 Delphi 开 发 系 统 主 要 提 供 四 个 菜 单 类 : TMenu 、新的存取控制策略 ,它的基本思想是根据组织视图中不同的 TMainMenu、TPopupMenu 和 TMenuItem。TMenu 是 TMainMenu 、职能岗位划分角色 ,资源访问许可被封装在角色中 ,用户被指 派到角色 ,通过角色间接地访问资源 。其中用户 、角色 、许可 TPopupMenu 的 基 类 , TMenu 类 中 包 含 TMenuItem 类 。三者关系如图 1 所示 。 TMainMenu 、TPopupMenu 的每个菜单项由 TMenuItem 组成 ,它是 这两个类的核 心 。其 中 与 我 们 有 关 的 类 是 TMainMenu 和 TMenuItem 类 , TPopupMenu 类不在考虑之列 。TMenuItem 类中 与算法 有 关 的 主 要 有 5 项 : ?Count : 指 示 子 菜 单 的 数 目 ; ?MenuIndex :指示该菜单项在父菜单中的索引号 ; ?Items : TMenuItem 数组 ,指示该层菜单的所有子菜单项集 ; ?Parent : 指向父菜单的指针 ; ?Caption :功能提示项信息 。 一个 Delphi 的菜单系统 ,由 TMenuItem 和 Items 项可构成 如图 2 所示的树形结构 。 图 1 用户 系统的使用者 。 角色 对应组织中某特定的职能岗位 ,代 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 特定的任务 范畴 ,如经理 、采购员等 。 许可 表示对系统中的客体进行特定模式访问的操作许 可 ,例如数据库系统中的选择 、插入 、删除 。 RBAC 方法和传统方法注重服务器端的数据权限管理 , 图 2而应用程序的功能权限和数据权限关系松散 。特别是对系统 其中树的第 0 层的根结点为主菜单的 TMenuItem ,它的 () 作者简介 :吕振洪1969 - ,男 ,讲师 ,主要研究方向 :工程数据库、图像处理、计算可视化. ( ) q : = OleTree . items. addchild q ,p . Caption; ( ) Items 中包含下层子菜单 即菜单条的 TMenuItem 结点的集 合 ;第 1 层的每个结点 TMenuItem 中的 Items 包含下层子菜单 end 的 TMenuItem 结点的集合 else dir : = false ; 一个 Delphi 的菜单系统 , 由 TMenuItem、Items 、Parent 项可 if not dir / / 是否回构成图结构 。形状与图 2 类似 ,只需把树形结构中的每条边 then begin 改成一条入边 、一条出边 。 q : = q. parent ; 2. 2 菜单系统的周游算法和周游序列的可视化 ()if p . menuindex < p . parent . count - 1 / / 是否还有兄弟结点要周游由于菜单系统的组织结构既可看成树形结构又可看成图 then begin 结构 ,根据菜单系统的存储特点我们还是把它看成树形结构 , dir : = true ; Parant 指针作为一般辅助信息 。对菜单资源的周游一般用先 p : = p . parent . itemsp . menuindex + 1 ; 根次序的深度周游方法来提取菜单资源中的功能提示项 ,并 / / 关键点 :直接进入兄弟结点继续周游 用目录树来实现可视化和功能权限分配 。由于菜单结构与目( ) q : = OleTree . items. addchild q ,p . caption; 录树结构有很多的相似性 ,通过目录树能完全体现菜单系统 end 的层次关系 ,菜单系统中的每项功能提示项与目录树中的每 else p : = p . parent ; / / 周游回个结点可一一对应 ,这种对应关系是稳定的 ,它是进行功能权 end ; 限分配的前提 。 end ; 一般周游树形结构需要用堆栈来保存周游信息 。由于 2. 4 功能权限分配Delphi 菜单系统的特殊性 ,含有指向父结点的 Parent 指针 ,利 当把周游结果用目录树可视化后 ,我们还应解决权限用该指针来回溯使周游算法变得非常的简单 ! 另外 ,用先根 配的问题 :哪项菜单项许可 ,哪项禁止 。这点在目录树中是 次序的深度周游过程与目录树的建立过程可同步进行 。我们 常容易的 ,因为目录树结构可与 TImageList 结合用图标来增 ( ) 只需定义一个建立目录树所需的 TTreeNode 变量 如 q来同 每项结点的效果 。我们可用目录树每项结点 TTreeNode 中 步树形结构的周游过程 ,当周游回溯时 ,把指向目录树中的 q Image Index 来标记权限和呈现给用户 。功能权限的信息组 也相应回溯 ,指向某个特定的父结点 。 有多种多样 ,我们可采用位映射方法 :菜单系统中的每个功 2. 3 算法项对应一个比特 ,用 0 表功能允许 ,用 1 表功能禁止 。有多 变量定义 :项菜单 ,就对应多少位二进制串 。另外用目录树来组织数 ( ) 不仅可体现数据间的层次关系 与原菜单系统一致,而且 可顺序访问目录树中的每个结点的数据 。由于有这个特性 Main Menu : TMainMenu ; / / 主菜单变量—/ / 目录树变量 我们只要顺序访问目录树结点对应的 Image Index 使能位 ,OleTree : TTreeView ; / / 当前周游的结点 终组合成二进制串 。 传统的功能权限控制方法是把上述p : TMenuItem ; / / 当前指向的目录树结点 的二进制串分配给 q : TTreeNode ; 个用户 ,当用户通过 MIS 系统登录成功后 ,根据该二进制的 dir :Boolean ; 应位来禁止/ 允许菜单功能项 。根据 RBAC 方法 ,我们应把 / / 周游方向 ,true 值表往子树方向周游 ,false 值表从子树回溯串分配给角色 。系统开发时我们可建立这样的“功能权限 周游菜单系统算法和建立目录树 :配表”: p : = Main Menu. items ; — q : = nil ; 角色名称 功能权限二进制串 dir : = true ; ?? () while dir or p < > Main Menu. itemsdo — / / 当回溯到根结点时结束周游 3 基于菜单资源的数据权限组织和统计算begin 对系统开发者来说 ,对应菜单资源的每个功能项所关 if dir 的数据对象和操作许可是不透明的 、可知的 。根据这点 ,我 then if p . count > = 1 用菜单系统中的菜单项名称作为联接字段 ,建立这样的“数 then begin 权限对照表”: p : = p . items0 ; 名称 Select 权限 Delete 权限 Update 权限 Insert 权限 Execute 权限 计算机应用2001 年258 就需要在构造函数中对信号量对象进行初始化 。头文件 SOMERESOURCE. H : 信号量一旦创建成功就可以开始计数资源访问 。实现计 # include ″afxmt . h″ (,需要首先创建一个 CSingleLock 对象 如果是多线程同 数过程 class CSomeResuorce ) 步对象 ,则需要创建一个 CMultiLock 对象, 并使用信号量的 { 指针作为参数 ,见程序 。 private : CSemaphore 3 semaphore ; () 调用 CSingleLock 对象的成员函数 Lock 就可以减少信号 public : 量的计数 ,并减少其内部计数器的值 。新的值保持有效直到 ( ) CSomeResuorce ; 信号量对象被释放 ,信号量的释放通过调用信号量对象成员 ( ) virtual ,CSomeResuorce ; () 函数 UnLock 函数来实现 。 ( ) void UseResuorce ; 如果在局部堆栈中创建 CSingleLock 对象 ,当程序运行到 } ; 对象的有效区外后 ,不仅会自动删除对象 ,而且还会自动释放 CsomeResouce 类的实现文件 CsomeResouce . cpp :( ) 对信 号 量 的 控 制 。也 就 是 , 调 用 UnLock 函 数 和 删 除 ( )CSomeResuorce : : CSomeResuorce CSingleLock 对象将增加信号量计数器的值 ,使得处于等待状 { 态的线程能够访问受保护的资源 。 () semaphore = new CSemaphore 2 ,2; } ( )CSomeResuorce : :,CSomeResuorce { delete semaphore ; 4 结束语 } 多线程编程在程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 思路上不同于传统的模块结构化 ( )void CSomeResuorce : :UseResuorce 方法 ,比一般的面向对象的思路也较为复杂 ,尤其是对于多处 { 理器平台的处理更为复杂 。要设计出性能良好的多线程程 ( ) CSingleLock singleLock semaphore; 序 ,不仅需要对操作系统的处理过程很清楚 ,还需要对具体应 ( ) singleLock. Lock ; 用有一个全面的认识 ,并对应用中各线程部分的关系非常清 () : : Sleep 5000; 楚 ,对同步模块中的同步对象的具体含义应尽可能地清晰明 } 了 ,以利于在程序中控制同步事件的发生 ,避免出现死锁或不 能同步处理的现象 。 在类的构造函数中动态地创建 CSemaphore 对象 。临界区 参考文献 对象和互斥体对象的创建不需要额外的参数 ,因此在头文件 1 ] Microsoft . MSDN Library Visual Studio 6 . 0Z , 1998 . 中定义临界区对象或互斥体对象 ,实际上就创建了临界区对 象或互斥体对象 。但是信号量的创建需要额外的参数 ,因此 () 上接第 255 页 统计算法 : 5 结束语) ( while 周游菜单系统未结束do begin 采用本文叙述的方法 ,编程简单 ,实现的程序功能及用户 操作界面都比较理想 。通过功能权限与数据权限分配紧密结 ?记下当前访问的菜单结点的周游次序号 i 和 菜单项名称 sMenuItem 。 合 ,提高了系统管理员的透明度 ,扩充了角色的内涵 ,增强了 ?根据 i 判断″功能权限分配表″中二进制串对 系统的安全性 。该方法已应用于浙江省金华市电业局的仪器 应的第 i 位是 0 还是 1 ,如为 1 则通过 sMenuItem 查找 仪表管理系统中 ,效果良好 。 ″数据权限对照表″中对应记录 ,提取各项权限列表 数据到角色的″数据权限集合″;如为 0 ,则不统计。 ?得到下个访问的菜单结点。 end 得到了角色的″数据权限集合″,我们可根据统计结果 ,进 行对应角色的数据权限分配 。 图 3 参考文献 4 新的用户 、角色 、许可之间的关系横空翻译组 , 译. Delphi2 程序设计大全M . 北京 : 机械工业出 1 ] 基于菜单资源的权限分配实现了功能权限和数据权限的 版社 ,1997 . 紧密结合 ,扩充了角色 、许可的内涵 ,它们之间的关系如图 3 许卓群 , 张乃孝 , 等. 数据结构 M . 北京 : 高等教育出版社 , 2 ] 所示 。 1987 . 冯国臻 , 张剑. 企业同意资源访问控制系统J . 计算机工程与 在这里功能许可指应用程序的菜单功能 。图 3 中我们可 3 ] () 应用 ,2000 , 6: 6 - 8 ,24 . 以看到 ,原来用户 、角色 、许可是单纯地由后台数据库管理系 施景超 , 孙维祥 , 许满武. 基于角色的存取控制及其实现J . 计 统来管理 ,通过引进功能许可 ,应用程序可直接控制数据库系 () 算机应用研究 ,2000 , 6:13 - 15 . 4 ] 统的数据权限 。
本文档为【基于菜单资源的权限分配】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_037433
暂无简介~
格式:doc
大小:62KB
软件:Word
页数:8
分类:生活休闲
上传时间:2018-04-29
浏览量:15