发明内容
本发明的主要目的在于提供一种用户权限验证方法及系统,以解决现有技术中不能够根据权限间的关系自动地进行权限验证的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种用户权限验证方法。根据本发明的用户权限验证方法包括:获取权限A的元权限;获取权限A的依赖关系;以及根据权限A的元权限和权限A的依赖关系验证权限A的用户权限。
进一步地,根据权限A的元权限和权限A的依赖关系验证权限A的用户权限包括:判断权限A是否有元权限;如果权限A没有元权限,则权限A没有用户权限;如果权限A有元权限,则判断权限A是否有依赖权限;以及如果权限A没有依赖权限,则权限A有用户权限。
进一步地,如果权限A有元权限,则判断权限A是否有依赖权限包括:如果权限A有依赖权限,则验证权限A的依赖权限是否有元权限;在权限A的依赖权限没有元权限时,权限A没有用户权限;在权限A的依赖权限有元权限时,判断权限A的依赖权限是否有用户权限;如果权限A的依赖权限有用户权限,则权限A有用户权限;以及如果权限A的依赖权限没有用户权限,则权限A没有用户权限。
进一步地,根据权限A的元权限和权限A的依赖关系验证权限A的用户权限包括:判断权限A是否有依赖权限;如果权限A有依赖权限,则验证权限A的依赖权限是否有元权限;在权限A的依赖权限没有元权限时,权限A没有用户权限;在权限A的依赖权限有元权限时,验证权限A的依赖权限是否有依赖权限:如果权限A的依赖权限没有依赖权限,则权限A有用户权限;以及如果权限A的依赖权限有依赖权限,则验证权限A的依赖权限的依赖权限是否被验证过,如果权限A的依赖权限的依赖权限被验证过,则权限A的依赖权限的依赖权限有用户权限,如果权限A的依赖权限的依赖权限没有被验证过,则验证权限A的依赖权限的依赖权限是否有依赖权限。
进一步地,获取权限A的依赖关系包括获取权限A与权限包的依赖关系,其中,权限包包括任意个权限。
进一步地,权限包包括与权限包,获取权限A的依赖关系包括:判断与权限包中所有权限是否都有用户权限;以及在与权限包中所有权限都有用户权限时,权限A有用户权限。
进一步地,权限包包括或权限包,获取权限A的依赖关系包括:判断或权限包中任一权限是否有用户权限;以及在或权限包中任一权限有用户权限时,权限A有用户权限。
为了实现上述目的,根据本发明的另一方面,提供了一种用户权限验证系统。根据本发明的用户权限验证系统包括:第一获取单元,用于获取权限A的元权限;第二获取单元,用于获取权限A的依赖关系;以及验证单元,用于根据权限A的元权限和权限A的依赖关系验证权限A的用户权限。
进一步地,验证单元包括:第一判断模块,用于判断权限A是否有元权限;第一确定模块,用于在权限A没有元权限时,确定权限A没有用户权限;第二判断模块,用于在权限A有元权限时,判断权限A是否有依赖权限;以及第二确定模块,用于在权限A没有依赖权限时,确定权限A有用户权限。
进一步地,判断模块包括:验证子模块,用于在权限A有依赖权限时,验证权限A的依赖权限是否有用户权限;第一确定子模块,用于在权限A的依赖权限没有元权限时,确定权限A没有用户权限;第一判断子模块,用于在权限A的依赖权限有元权限时,判断权限A的依赖权限是否有用户权限;第二确定子模块,用于在权限A的依赖权限有用户权限时,确定权限A有用户权限;以及第三确定子模块,用于在权限A的依赖权限没有用户权限时,权限A没有用户权限。
进一步地,验证单元包括:第三判断模块,用于判断权限A是否有依赖权限;第一验证模块,用于在权限A有依赖权限时,验证权限A的依赖权限是否有用户权限;第三确定模块,用于在权限A的依赖权限没有元权限时,确定权限A没有用户权限;第二验证模块,用于在权限A的依赖权限有元权限时,验证权限A的依赖权限是否有依赖权限;第四确定模块,用于在权限A的依赖权限没有依赖权限时,确定权限A有用户权限;以及第五确定模块,用于在权限A的依赖权限有依赖权限时,验证权限A的依赖权限的依赖权限是否被验证过,如果权限A的依赖权限的依赖权限被验证过,则权限A的依赖权限的依赖权限有用户权限,如果权限A的依赖权限的依赖权限没有被验证过,则验证权限A的依赖权限的依赖权限是否有依赖权限。
进一步地,第一获取单元还用于获取权限A与权限包的依赖关系,其中,权限包包括任意个权限。
进一步地,权限包包括与权限包,第一获取单元包括:第四判断模块,用于判断与权限包中所有权限是否都有用户权限;以及第六确定模块,用于在与权限包中所有权限都有用户权限时,权限A有用户权限。
进一步地,权限包包括或权限包,第一获取单元包括:第四判断模块,用于判断或权限包中任一权限是否有用户权限;以及第六确定模块,用于在或权限包中任一权限有用户权限时,权限A有用户权限。
通过本发明,解决了现有技术中不能够根据权限间的关系自动地进行权限判断的问题,进而达到了自动进行权限判断的效果。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1是根据本发明第一实施例的用户权限验证方法的流程图。如图所示,该用户权限验证方法包括如下步骤:
步骤S101,获取权限A的元权限。权限A的元权限是在权限A没有依赖权限的情况下,用户能够访问权限A的权限。获取权限A的元权限可以是获取系统赋予权限A的元权限或者获取用户设置的元权限。
步骤S102,获取权限A的依赖关系。权限A的依赖关系可以是权限A有依赖权限,也可以是权限A没有依赖权限。依赖权限是拥有权限A的前提是拥有权限B,则权限A的依赖权限为权限B。
需要说明的是,权限A的依赖权限可以有一个或者多个,并且权限A的依赖权限还可以有依赖权限,例如:权限A的依赖权限为权限B,权限B的依赖权限为权限C等等。
步骤S103,根据权限A的元权限和权限A的依赖关系验证权限A的用户权限。如果权限A有元权限,并且没有依赖权限时,权限A有用户权限;如果权限A没有元权限,不管权限A是否有依赖权限,权限A都没有用户权限;如果权限A有元权限,并且有依赖权限,则判断依赖权限是否能够通过权限验证,如果通过权限验证,则权限A有用户权限,如果未通过权限验证,则权限A没有用户权限。其中,判断依赖权限是否能够通过权限验证包括验证依赖权限的元权限和依赖权限的依赖权限。用户权限就是用户能够访问权限A的权限。
通过上述步骤,能够直接根据权限A的元权限和权限A的依赖关系验证权限A是用户权限,无需对每个权限进行逐一设定。
图2是根据本发明第二实施例的用户权限验证方法的流程图。以下结合图2对该用户权限验证方法进行说明,图2所示实施例可以作为图1所示实施例的优选实施方式,如图所示,该用户权限验证方法包括如下步骤:
步骤S201,获取权限A的元权限。权限A的元权限是在权限A没有依赖权限的情况下,用户能够访问权限A的权限。获取权限A的元权限可以是获取系统赋予权限A的元权限或者获取用户设置的元权限。
步骤S202,获取权限A的依赖关系。权限A的依赖关系可以是权限A有依赖权限,也可以是权限A没有依赖权限。拥有权限A的前提是拥有权限B,则权限A的依赖权限为权限B。
步骤S203,判断权限A是否有元权限。判断权限A在没有依赖权限的情况下是否能够被用户访问,也就是判断权限A是否有元权限。
步骤S204,如果权限A没有元权限,则权限A没有用户权限。在权限A没有元权限的情况下,无论权限A是否有依赖权限,权限A都没有用户权限。
步骤S205,如果权限A有元权限,则判断权限A是否有依赖权限。在权限A有元权限的情况下,判断权限A是否有依赖权限。
步骤S206,如果权限A没有依赖权限,则权限A有用户权限。如果权限A没有依赖权限,那么根据权限A有元权限,以及权限A没有依赖权限这两个条件,确定权限A有用户权限。
优选地,为了在权限A有元权限的情况下,确定权限A是否有用户权限,可以先判断权限A是否有依赖权限。
如果权限A有依赖权限,则验证权限A的依赖权限是否有元权限。在权限A有依赖权限的情况下,继续判断权限A的依赖权限是否拥有元权限。与验证权限A是否有用户权限的方法相同,首先验证权限A的依赖权限的元权限,在权限A的依赖权限具有元权限的情况下,判断权限A的依赖权限是否有用户权限。
在权限A的依赖权限没有元权限时,权限A没有用户权限。在权限A的依赖权限没有元权限的情况下,无论权限A的依赖权限是否拥有依赖权限,权限A没有用户权限。
在权限A的依赖权限有元权限时,判断权限A的依赖权限是否有用户权限。在权限A的依赖权限有元权限时,需要判断权限A的依赖权限,在权限A的依赖权限有用户权限的情况下,权限A有用户权限,在权限A的依赖权限没有用户权限的情况下,权限A没有用户权限。
如果权限A的依赖权限有用户权限,则权限A有用户权限。如果权限A的依赖权限有用户权限,与权限A的依赖权限有元权限以及权限A有元权限相结合,确定权限A有用户权限。
如果权限A的依赖权限没有用户权限,则权限A没有用户权限。如果权限A的依赖权限没有用户权限,与权限A的依赖权限有元权限以及权限A有元权限相结合,确定权限A有用户权限。
从上述步骤可以看出,在权限A有元权限的情况下,还要判断权限A是否有依赖权限,以及在权限A有依赖权限的情况下,判断权限A的依赖权限是否有用户权限,在权限A的依赖权限有用户权限的情况下,权限A有用户权限。
图3是根据本发明第三实施例的用户权限验证方法的示意图。图3所示用户权限验证方法可以作为图1所示的用户权限验证方法的优选实施方式,如图所示,该验证方法在执行图1所示步骤S101和步骤S102之后,执行如下步骤:
步骤S301,确定权限A有元权限。权限A可以有元权限或者没有元权限,元权限就是系统授予权限A的权限,在权限A没有依赖权限的情况下确定权限A有用户权限。
步骤S302,判断权限A是否有依赖权限。在确定权限A有元权限之后,判断权限A是否拥有依赖权限,根据依赖权限的元权限和依赖权限判断权限A是否有用户权限。
步骤S303,如果权限A有依赖权限,则验证权限A的依赖权限是否有元权限。在权限A有依赖权限的情况下,继续判断权限A的依赖权限是否拥有元权限。与验证权限A是否有用户权限的方法相同,首先验证权限A的依赖权限的元权限,在权限A的依赖权限具有元权限的情况下,判断权限A的依赖权限是否有元权限。
步骤S304,在权限A的依赖权限没有元权限时,权限A没有用户权限。在权限A的依赖权限没有元权限的情况下,无论权限A的依赖权限是否拥有依赖权限,权限A没有用户权限。
步骤S305,在权限A的依赖权限有元权限时,验证权限A的依赖权限是否有依赖权限。如果权限A的依赖权限有元权限,需要验证权限A的依赖权限是否还有依赖权限,相应的通过确定权限A的依赖权限有依赖权限和没有依赖权限这两种情况,确定权限A是否有用户权限。
步骤S306,如果权限A的依赖权限没有依赖权限,则权限A有用户权限。权限A的依赖权限没有依赖权限,并且权限A有元权限时,权限A有用户权限。
步骤S307,如果权限A的依赖权限有依赖权限,则验证权限A的依赖权限的依赖权限是否被验证过,如果权限A的依赖权限的依赖权限被验证过,则权限A的依赖权限的依赖权限有用户权限,如果权限A的依赖权限的依赖权限没有被验证过,则验证权限A的依赖权限的依赖权限是否有依赖权限。为了避免验证的过程无限循环,如果判断出当前验证的权限被验证过,那么直接通过本次验证,如果没有被验证过,则继续进行验证过程。
优选地,为了简化依赖关系的逻辑,获取权限A的依赖关系可以是获取权限A与权限包的依赖关系,其中,权限包包括任意个权限。将任意个权限(或权限包)在逻辑上归为一个集合,这个集合在外部看来有一个整体的权限状态(即有权限或者无权限),这个集合就可以称为权限报。权限包分为“与权限包”和“或权限包”,与权限包仅当内部包含的权限全部为有权限的情况下整体权限状态才是有权限;或权限包只要内部包含的权限中任意一个为有权限,则整体权限状态就是有权限。
与权限包仅当内部包含的权限全部为有权限的情况下整体权限状态才是有权限,例如,与权限包中包括权限B1、B2、…、Bn,如果缺少权限B1、B2、…、Bn中的任意一个,则该与权限包没有权限。
由于缺少与权限包中的任意一个权限,该与权限包没有用户权限,因此需要判断是否与权限包中的所有权限都有用户权限。在确定与权限包中的所有权限都有用户权限时,权限A有用户权限。
或权限包在权限包中任一权限为有权限的状态该或权限包有权限,例如,或权限包中包括权限B1、B2、…、Bn中的一个或多个,当且仅当权限B1、B2、…、Bn中的每一个都不存在时,才无法拥有权限A。
由于或权限包中存在任一权限有用户权限,那么该或权限包有用户权限,因此粗要判断或权限包中任一权限是否有用户权限。在确定或权限包中任一权限有用户权限时,权限A有用户权限。
本发明实施例还提供了一种用户权限验证装置。
本发明实施例的用户权限验证方法可以通过本发明实施例所提供的用户权限验证装置来执行,本发明实施例的用户权限验证装置也可以用于执行本发明实施例所提供的用户权限验证方法。
图4是根据本发明第一实施例的用户权限验证装置的示意图。如图所示,该用户权限验证装置包括第一获取单元10、第二获取单元20和验证单元30。
第一获取单元10用于获取权限A的元权限。权限A的元权限是在权限A没有依赖权限的情况下,用户能够访问权限A的权限。第一获取单元10获取权限A的元权限可以是获取系统赋予权限A的元权限或者获取用户设置的元权限。
第二获取单元20用于获取权限A的依赖关系。权限A的依赖关系可以是权限A有依赖权限,也可以是权限A没有依赖权限。依赖权限是拥有权限A的前提是拥有权限B,则权限A的依赖权限为权限B。第二获取单元20获取权限A的依赖关系可以是获取权限A有依赖权限,或者获取权限A没有依赖权限。
需要说明的是,权限A的依赖权限可以有一个或者多个,并且权限A的依赖权限还可以有依赖权限,例如:权限A的依赖权限为权限B,权限B的依赖权限为权限C等等。
验证单元30用于根据权限A的元权限和权限A的依赖关系验证权限A的用户权限。如果权限A有元权限,并且没有依赖权限时,权限A有用户权限;如果权限A没有元权限,不管权限A是否有依赖权限,权限A都没有用户权限;如果权限A有元权限,并且由依赖权限,则判断依赖权限是否能够通过权限验证,如果通过权限验证,则权限A有用户权限,如果未通过权限验证,则权限A没有用户权限。其中,判断依赖权限是否能够通过权限验证包括验证依赖权限的元权限和依赖权限的依赖权限。用户权限就是用户能够访问权限A的权限。
通过上述用户权限验证装置,能够直接根据权限A的元权限和权限A的依赖关系验证权限A是用户权限,无需对每个权限进行逐一设定。
图5是根据本发明第二实施例的用户权限验证装置的示意图。该用户权限验证装置包括第一获取单元10、第二获取单元20和验证单元30,其中,验证单元30包括第一判断模块301、第一确定模块302、第二判断模块303和第二确定模块304。该图中的第一获取单元10、第二获取单元20的功能与图4所示的用户权限验证装置的第一获取单元10、第二获取单元20的功能相同,在此不做赘述。
第一判断模块301用于判断权限A是否有元权限。判断权限A在没有依赖权限的情况下是否能够被用户访问,也就是判断权限A是否有元权限。
第一确定模块302用于在权限A没有元权限时,确定权限A没有用户权限。在权限A没有元权限的情况下,无论权限A是否有依赖权限,权限A都没有用户权限。
第二判断模块303用于在权限A有元权限时,判断权限A是否有依赖权限。在权限A有元权限的情况下,判断权限A是否有依赖权限。
第二确定模块304用于在权限A没有依赖权限时,确定权限A有用户权限。如果权限A没有依赖权限,那么根据权限A有元权限,以及权限A没有依赖权限这两种情况,确定权限A有用户权限。
优选地,为了在权限A有元权限的情况下,确定权限A是否有用户权限,可以先判断权限A是否有依赖权限。判断模块包括:验证子模块、第一确定子模块、第一判断子模块、第二确定子模块和第三确定子模块。
验证子模块,用于在权限A有依赖权限时,验证权限A的依赖权限是否有元权限。在权限A有依赖权限的情况下,继续判断权限A的依赖权限是否拥有元权限。与验证权限A是否有用户权限的方法相同,首先验证权限A的依赖权限的元权限,在权限A的依赖权限具有元权限的情况下,判断权限A的依赖权限是否有用户权限。
第一确定子模块,用于在权限A的依赖权限没有元权限时,确定权限A没有用户权限。在权限A的依赖权限没有元权限的情况下,无论权限A的依赖权限是否拥有依赖权限,权限A没有用户权限。
第一判断子模块,用于在权限A的依赖权限有元权限时,判断权限A的依赖权限是否有用户权限。在权限A的依赖权限有元权限时,需要判断权限A的依赖权限,在权限A的依赖权限有用户权限的情况下,权限A有用户权限,在权限A的依赖权限没有用户权限的情况下,权限A没有用户权限。
第二确定子模块,用于在权限A的依赖权限有用户权限时,确定权限A有用户权限。如果权限A的依赖权限有用户权限,与权限A的依赖权限有元权限以及权限A有元权限相结合,确定权限A有用户权限。
第三确定子模块,用于在权限A的依赖权限没有用户权限时,权限A没有用户权限。如果权限A的依赖权限没有用户权限,与权限A的依赖权限有元权限以及权限A有元权限相结合,确定权限A有用户权限。
图6是根据本发明第三实施例的用户权限验证装置的示意图。如图所示,该用户权限验证装置包括第一获取单元10、第二获取单元20和验证单元30,其中,验证单元30包括第三判断模块305、第一验证模块306、第三确定模块307、第二验证模块308、第四确定模块309和第五确定模块301。
第三判断模块305用于判断权限A是否有依赖权限。在确定权限A有元权限之后,判断权限A是否拥有依赖权限,根据依赖权限的元权限和依赖权限判断权限A是否有用户权限。
第一验证模块306用于在权限A有依赖权限时,验证权限A的依赖权限是否有元权限在权限A有依赖权限的情况下,继续判断权限A的依赖权限是否拥有元权限。与验证权限A是否有用户权限的方法相同,首先验证权限A的依赖权限的元权限,在权限A的依赖权限具有元权限的情况下,判断权限A的依赖权限是否有元权限。。
第三确定模块307用于在权限A的依赖权限没有元权限时,确定权限A的依赖权限没有用户权限。在权限A的依赖权限没有元权限的情况下,无论权限A的依赖权限是否拥有依赖权限,权限A没有用户权限。
第二验证模块308用于在权限A的依赖权限有元权限时,验证权限A的依赖权限是否有依赖权限。如果权限A的依赖权限有元权限,需要验证权限A的依赖权限是否还有依赖权限,相应的通过确定权限A的依赖权限有依赖权限和没有依赖权限这两种情况,确定权限A是否有用户权限。
第四确定模块309用于在权限A的依赖权限没有依赖权限时,确定权限A有用户权限。权限A的依赖权限没有依赖权限,并且权限A有元权限时,权限A有用户权限。
第五确定模块310用于在权限A的依赖权限有依赖权限时,验证权限A的依赖权限的依赖权限是否被验证过,如果权限A的依赖权限的依赖权限被验证过,则权限A的依赖权限的依赖权限有用户权限,如果权限A的依赖权限的依赖权限没有被验证过,则验证权限A的依赖权限的依赖权限是否有依赖权限。为了避免验证的过程无限循环,如果判断出当前验证的权限被验证过,那么第五确定模块310直接通过本次验证,如果没有被验证过,则第五确定模块310继续进行验证过程。
优选地,为了简化依赖关系的逻辑,获取权限A的依赖关系可以是第一获取单元获取权限A与权限包的依赖关系,其中,权限包包括任意个权限。将任意个权限(或权限包)在逻辑上归为一个集合,这个集合在外部看来有一个整体的权限状态(即有权限或者无权限),这个集合就可以称为权限报。权限包分为“与权限包”和“或权限包”,与权限包仅当内部包含的权限全部为有权限的情况下整体权限状态才是有权限;或权限包只要内部包含的权限中任意一个为有权限,则整体权限状态就是有权限。
第一获取单元包括第四判断模块和第六确定模块。
与权限包仅当内部包含的权限全部为有权限的情况下整体权限状态才是有权限,例如,与权限包中包括权限B1、B2、…、Bn,如果缺少权限B1、B2、…、Bn中的任意一个,则该与权限包没有权限。
由于缺少与权限包中的任意一个权限,该与权限包没有用户权限,因此需要第四判断模块判断是否与权限包中的所有权限都有用户权限。在确定与权限包中的所有权限都有用户权限时,第六确定模块确定权限A有用户权限。
或权限包在权限包中任一权限为有权限的状态该或权限包有权限,例如,或权限包中包括权限B1、B2、…、Bn中的一个或多个,当且仅当权限B1、B2、…、Bn中的每一个都不存在时,才无法拥有权限A。
由于或权限包中存在任一权限有用户权限,那么该或权限包有用户权限,因此粗要判断或权限包中任一权限是否有用户权限。在确定或权限包中任一权限有用户权限时,权限A有用户权限。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。