北极星

搜索历史清空

  • 水处理
您的位置:电力电力新闻综合正文

细粒度应用授权策略研究[3]-细粒度_模块分裂_角色树_角色森林_权限管理

2008-08-04 18:10来源:希赛关键词:安全管理收藏点赞

投稿

我要投稿

  应用模块怎样判定当前用户是否有权访问本模块呢?

  用户乙登陆了操作系统,当需要对输入域A进行修改的时候,先进行权限判定。输入域A所在的程序代码段知道自己所属的模块名称(模块名称已经包含了期望用户拥有的权限),看看模块名称属于几个角色,然后判断登陆用户是否拥有其中的任何一项角色,如果拥有任何一项角色,即可以进行相应的操作[1]。这个权限判定算法可以表示为:

在需要进行模块权限判定的功能区域:

IfFunPrivate(username,moduleName)then

Field.enabled=true

Else

Field.enabled=false;

其中userName为登陆系统的用户名,moduleNamefield所在模块名称。

权限判定函数:

Funprivate(username,moduleName):Boolean

Begin

ArrModuleRole[]:string;//模块拥有的角色

从权限控制体制中获取该用户拥有的角色,并保存到ArrUserRole[]中;

getModuleRole(moduleName,ArrModuleRole[]);

For(i=0;i

For(j=0;j

IfArrUserRole[i]=ArrModuleRole[j]thenreturntrue;

End;

//获取模块拥有的角色

getModuleRole(moduleName,ArrModuleRole[])

begin

select角色名intoArrModuleRole[]fromrole_modulestartwith模块名称=moduleNameconnectby模块名称;

end

  通过上面的算法,如果登陆用户拥有模块的访问权限,可以返回真,否则返回假。

  值得注意的一点,这里的角色是个递归的概念,在查找角色的时候,注意包含与拆分的处理,程序的实现中可以通过为角色创建标记表示该角色是否包含子角色或者父角色来减少递归次数[1]。

  3局限性

  这样的用户动态扩展是基于用户群分类时已经分析好所有权限情况,新增加的用户不会在要求模块的分裂。当新增加的用户要求模块重新分裂时,我们可能需要从新修改代码。从这一点来说,所谓动态能维护也有局限性,虽然代码修改点和回归测试点可以控制在非常小的范围。

  4结束语

  因为模块的划分不会经常变动,而且用户群巨大的时候,这样的设置模式可以简化权限分配时的工作量,并且可以做到比菜单级权限管理细的多的权限分配,在人力资源系统,办公自动化等要求权限管理粒度非常细的系统中具备很好的应用价值。

  参考文献:(注意:所有英文作者名全部用大写字母形式)
  [1]李建中王珊.数据库系统原理.第二版.北京:电子工业出版社,2004
  [2]严蔚敏吴伟民.数据结构.北京:清华大学出版社
  [3]李代平.软件工程.北京:冶金工业出版社

[1][2][3]

投稿与新闻线索:陈女士 微信/手机:13693626116 邮箱:chenchen#bjxmail.com(请将#改成@)

特别声明:北极星转载其他网站内容,出于传递更多信息而非盈利之目的,同时并不代表赞成其观点或证实其描述,内容仅供参考。版权归原作者所有,若有侵权,请联系我们删除。

凡来源注明北极星*网的内容为北极星原创,转载需获授权。

安全管理查看更多>