权限角色继承方法技术

技术编号:4020815 阅读:204 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种权限角色继承方法,其包括以下步骤:步骤S202,设计角色继承的数据库表,并将关于角色继承的继承信息保存在数据库表中;步骤S204,利用数据库表,根据对角色继承的继承关系的处理来处理数据库表;以及步骤S206,根据数据库表,排除角色继承中的循环继承关系。通过本发明专利技术,能够很好地解决权限的角色继承问题,与传统处理方式相比,不仅使开发的复杂性大大降低,更重要的是在性能方面基本没有额外的损失,大大提升了权限的可用性。

【技术实现步骤摘要】

本专利技术大体上涉及软件系统中的权限管理,更具体地,涉及一种权限角色继承方 法,其利用数据库的功能,通过结构化查询语言(Structured Query Language,以下简称为 SQL)来处理角色继承关系。
技术介绍
权限管理是各种应用软件系统的一个重要功能,随着业务应用的越来越复杂,权 限的设置及使用也越来越复杂。为了更好地完成对用户的授权,可以引入权限的继承。权 限的继承能够有效简化授权人对普通业务操作用户的授权及权限修改等管理工作。图1是权限的基于角色(role)的继承关系的示图,如图1所示,r7虽然只直接继 承了 r4,r5, r6,其实还间接继承了 rl,r2, r3。所以继承具有传递性。当前的管理软件解决权限继承问题的方法主要有几个方法1)根据继承关系,采用递归的方式,对当前用户包含的角色,以及每个角色可能存 在对其它角色的继承,使用递归的方法查找这些角色。每次使用时必须进行递归访问,效率 比较低下;该方法的优点是不需额外处理。2)根据继承关系,建立继承关系的双链表结构,每个角色如果存在继承关系,建立 链表结构。用链表来存放继承关系。一个角色不仅需要记录它继承了谁,还要记录下来谁 继承了它。这样就不需使用递归方式了,通过链表结构就能够找到有继承关系的角色。该 方案在权限使用时效率比方法1有一定的改进,但是需要维护两个链表结构的信息,另外 通常需要引入计数器。由于链表的处理通常是通过程序来处理的,而在权限访问中,查找角色继承只是 权限访问的一个步骤。还需要根据角色查找每个角色的权限。因此,继续一种新型的解决方案来将复杂的继承关系的处理由强大的SQL来处 理,从而能够大大降低由于角色继承带来的开发方面的复杂性,并尽可能将由于处理继承 而带来的性能损失降到最低。
技术实现思路
鉴于上述情况,本专利技术提供了一种,其充分利用数据库的功能, 将复杂的继承关系的处理由强大的SQL来处理,从而能够大大降低由于角色继承带来的开 发方面的复杂性,并尽可能将由于处理继承而带来的性能损失降到最低。根据本专利技术,包括以下步骤步骤S202,设计角色继承的数据 库表,并将关于角色继承的继承信息保存在数据库表中;步骤S204,利用数据库表,根据对 角色继承的继承关系的处理来处理数据库表;以及步骤S206,根据数据库表,排除角色继 承中的循环继承关系。其中,数据库表包含了继承角色与被继承角色之间的双向链表信息,并且其至少 包括以下参数继承角色;被继承角色;继承标识,关于一次继承操作发生的唯一标识;以及是否继承线,存在直接继承关系的权限角色之间的连线。对角色继承的继承关系的处理至少包括增加处理、删除处理、查询处理以及修改处理。 可选地,在步骤S204中,当对角色继承的继承关系执行增加处理时,查找被继承 角色的所有继承角色,查找继承于所查找到的继承角色的所有角色,并且将各角色之间的 直接角色继承信息以及引发的所有间接角色继承信息,利用同一个唯一标识来批量插入数 据库表。其中,间接角色继承信息包括继承于增加处理的继承角色的所有角色均作为继 承角色,以及增加处理的继承角色由于增加处理而带来的所有新增的继承角色作为被继承 角色。可选地,在步骤S204中,当对角色继承的继承关系执行删除处理时,输入需要删 除的继承关系,以找到继承角色和被继承角色,查找继承角色的所有继承关系,生成第一临 时表,查找被继承角色的所有继承关系,生成第二临时表,根据第一临时表和第二临时表的 继承标识,删除与继承角色和被继承角色有关的所有继承关系,根据第一临时表,调用增加 处理的功能,重新生成继承角色的所有继承关系,并且根据第二临时表,调用增加处理的功 能,重新生成被继承角色的所有继承关系。可选地,在步骤S204中,当对角色继承的继承关系执行查询处理时,根据数据库 表,查找继承角色的所有被继承角色。应了解,修改处理为增加处理和删除处理的组合。在步骤S206中,包括加入一个关于被继承角色和继承角色的继承关系;查找被 继承角色继承的第一所有角色;查找继承于继承角色的第二所有角色;将第一所有角色和 第二所有角色的数据形成相同的第一和第二数据笛卡尔集合;以及将第一数据笛卡尔集合 中的继承关系与第二数据笛卡尔集合中的继承关系进行比较,以确定是否存在循环继承关 系。因此,通过本专利技术,能够很好地解决权限的角色继承问题,与传统处理方式相比, 不仅使开发的复杂性大大降低,更重要的是在性能方面基本没有额外的损失,大大提升了 权限的可用性。附图说明图1是权限的基于角色(role)的继承关系的示图;图2是根据本专利技术的的流程图。具体实施例方式以下将结合附图详细描述本专利技术的实施例。应了解,权限的角色继承主要涉几个问题权限使用时的角色继承查找;角色继 承关系的修改或删除处理;以及角色的继承的循环继承检查等。因此,要求在充分使用角色 继承带来的管理便利的同时,又能够尽量不损失性能和可用性。图2是根据本专利技术的的流程图。如图2所示,该方法包括以下 步骤步骤S202,设计角色继承的数据库表,并将关于角色继承的继承信息保存在数据 库表中;步骤S204,利用数据库表,根据对角色继承的继承关系的处理来处理数据库表; 以及步骤S206,根据数据库表,排除角色继承中的循环继承关系。其中,数据库表包含了继承角色与被继承角色之间的双向链表信息,并且其至少 包括以下参数继 承角色;被继承角色;继承标识,关于一次继承操作发生的唯一标识;以 及是否继承线,存在直接继承关系的权限角色之间的连线。对角色继承的继承关系的处理至少包括增加处理、删除处理、查询处理以及修改处理。可选地,在步骤S204中,当对角色继承的继承关系执行增加处理时,查找被继承 角色的所有继承角色,查找继承于所查找到的继承角色的所有角色,并且将各角色之间的 直接角色继承信息以及引发的所有间接角色继承信息,利用同一个唯一标识来批量插入数 据库表。其中,间接角色继承信息包括继承于增加处理的继承角色的所有角色均作为继 承角色,以及增加处理的继承角色由于增加处理而带来的所有新增的继承角色作为被继承 角色。可选地,在步骤S204中,当对角色继承的继承关系执行删除处理时,输入需要删 除的继承关系,以找到继承角色和被继承角色,查找继承角色的所有继承关系,生成第一临 时表,查找被继承角色的所有继承关系,生成第二临时表,根据第一临时表和第二临时表的 继承标识,删除与继承角色和被继承角色有关的所有继承关系,根据第一临时表,调用增加 处理的功能,重新生成继承角色的所有继承关系,并且根据第二临时表,调用增加处理的功 能,重新生成被继承角色的所有继承关系。可选地,在步骤S204中,当对角色继承的继承关系执行查询处理时,根据数据库 表,查找继承角色的所有被继承角色。应了解,修改处理为增加处理和删除处理的组合。在步骤S206中,包括加入一个关于被继承角色和继承角色的继承关系;查找被 继承角色继承的第一所有角色;查找继承于继承角色的第二所有角色;将第一所有角色和 第二所有角色的数据形成相同的第一和第二数据笛卡尔集合;以及将第一数据笛卡尔集合 中的继承关系与第二数据笛卡尔集合中的继承关系进行比较,以确定是否存在循环继承关 系。可见,本专利技术的技术方案主要结合了数据库技术以及对授权过本文档来自技高网
...

【技术保护点】
一种权限角色继承方法,其利用数据库的功能,通过结构化查询语言来处理角色继承关系,其特征在于,包括以下步骤:步骤S202,设计角色继承的数据库表,并将关于角色继承的继承信息保存在所述数据库表中;步骤S204,利用所述数据库表,根据对所述角色继承的继承关系的处理来处理所述数据库表;以及步骤S206,根据所述数据库表,排除所述角色继承中的循环继承关系。

【技术特征摘要】

【专利技术属性】
技术研发人员:史周军
申请(专利权)人:用友软件股份有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1