控制用户访问对象的系统和方法转让专利

申请号 : CN201811483548.0

文献号 : CN111274587A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 仲哲

申请人 : 北京嘀嘀无限科技发展有限公司

摘要 :

本申请实施例公开了一种控制用户访问对象的方法。所述方法包括获取用户访问对象的请求。所述方法还包括基于预定义访问许可和用户之间的映射关系,确定用户的访问权限信息,用户访问权限信息表示一个或以上权限。所述一个或以上权限包含在至少两个权限中,所述至少两个权限储存在存储设备中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向。所述方法进一步包括执行访问校验以处理所述请求。本申请采用的控制用户访问对象的方法,在权限节点之间可以构成上下游关系,达到了权限的继承效果。

权利要求 :

1.一种控制用户访问对象的方法,其特征在于,包括:获取用户访问对象的请求;

基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及执行访问校验以处理所述请求;

其中,

所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;

所述请求包含至少一个需要校验的关键节点的节点信息;以及执行访问校验以处理所述请求包括:

确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,允许所述访问对象的请求。

2.根据权利要求1所述的方法,其特征在于,所述每个有向无环图结构允许所述至少两个权限之间的权限继承,所述父节点具有所述父节点的一个或以上子节点对应的一个或以上权限。

3.根据权利要求1或2所述的方法,其特征在于,所述用户的访问权限信息包括与所述一个或以上权限相关联的所述用户的一个或以上角色。

4.根据权利要求1至3任一项所述的方法,其特征在于,所述对象包括对资源执行的操作。

5.根据权利要求4所述的方法,其特征在于,所述至少一个有向无环图结构包括第一有向无环图结构,所述第一有向无环图结构包括与功能操作权限相关联的所述至少两个节点中的至少两个第一节点。

6.根据权利要求1至5任一项所述的方法,其特征在于,所述对象包括资源。

7.根据权利要求6所述的方法,其特征在于,所述至少一个有向无环图结构包括第二有向无环图结构,所述第二有向无环图结构包括与数据范围权限相关联的所述至少两个节点中的至少两个第二节点。

8.根据权利要求1至7任一项所述的方法,其特征在于,所述至少两个权限至少包括以下其中之一:允许所述用户授予其他用户权限的权限,

为其他用户创建权限的权限,

查询用户权限的权限,

修改用户权限的权限,以及

撤销用户权限的权限。

9.根据权利要求1至8任一项所述的方法,其特征在于,确定所述至少一个关键节点的节点信息是否与所述访问权限信息表示的所述一个或以上权限之一匹配,包括:对所述至少一个关键节点中的每个关键节点,从所述每个关键节点遍历至所述至少一个有向无环图结构的根节点;

确定是否遍历到所述访问权限信息表示的所述一个或以上权限之一;

在确定遍历到所述访问权限信息表示的所述一个或以上权限之一时,确定存在所述匹配;以及在确定没有遍历到所述访问权限信息表示的所述一个或以上权限时,确定不存在所述匹配。

10.根据权利要求1至9任一项所述的方法,其特征在于,包括:验证所述访问对象的请求中包含的所述至少一个关键节点的节点信息。

11.根据权利要求1或10所述的方法,其特征在于,包括:在确定所述访问对象的请求中包含的所述至少一个关键节点的节点信息未通过验证时,拒绝所述请求。

12.一种控制用户访问对象的系统,其特征在于,包括获取模块、权限确定模块和访问校验模块;

所述获取模块用于获取用户访问对象的请求;

所述权限确定模块用于基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及所述访问校验模块用于执行访问校验以处理所述请求;

其中,

所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;

所述请求包含至少一个需要校验的关键节点的节点信息;以及所述访问校验模块用于确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,所述访问校验模块用于允许所述访问对象的请求。

13.根据权利要求12所述的系统,其特征在于,所述每个有向无环图结构允许所述至少两个权限之间的权限继承,所述父节点具有所述父节点的一个或以上子节点对应的一个或以上权限。

14.根据权利要求12或13所述的系统,其特征在于,所述用户的访问权限信息包括与所述一个或以上权限相关联的所述用户的一个或以上角色。

15.根据权利要求12至14任一项所述的系统,其特征在于,所述对象包括对资源执行的操作。

16.根据权利要求15所述的系统,其特征在于,所述至少一个有向无环图结构包括第一有向无环图结构,所述第一有向无环图结构包括与功能操作权限相关联的所述至少两个节点中的至少两个第一节点。

17.根据权利要求12至16任一项所述的系统,其特征在于,所述对象包括资源。

18.根据权利要求17所述的系统,其特征在于,所述至少一个有向无环图结构包括第二有向无环图结构,所述第二有向无环图结构包括与数据范围权限相关联的所述至少两个节点中的至少两个第二节点。

19.根据权利要求12至18任一项所述的系统,其特征在于,所述至少两个权限至少包括以下其中之一:允许所述用户授予其他用户权限的权限,

为其他用户创建权限的权限,

查询用户权限的权限,

修改用户权限的权限,以及

撤销用户权限的权限。

20.根据权利要求12至19任一项所述的系统,其特征在于,所述访问校验模块进一步用于:对所述至少一个关键节点中的每个关键节点,从所述每个关键节点遍历至所述至少一个有向无环图结构的根节点;

确定是否遍历到所述访问权限信息表示的所述一个或以上权限之一:在确定遍历到所述访问权限信息表示的所述一个或以上权限之一时,确定存在所述匹配;以及在确定没有遍历到所述访问权限信息表示的所述一个或以上权限时,确定不存在所述匹配。

21.根据权利要求12至20任一项所述的系统,其特征在于,进一步包括验证模块,所述验证模块用于:验证所述访问对象的请求中包含的所述至少一个关键节点的节点信息。

22.根据权利要求21所述的系统,其特征在于,所述验证模块进一步用于:在确定所述访问对象的请求中包含的所述至少一个关键节点的节点信息未通过验证时,拒绝所述请求。

23.一种控制用户访问对象的装置,其特征在于,包括至少一个存储介质以及至少一个处理器;

所述至少一个存储介质用于存储计算机指令;

所述至少一个处理器用于执行所述计算机指令以实现权利要求1~11中任一项所述的控制用户访问对象的方法。

24.一种计算机可读存储介质,所述存储介质存储有计算机指令,当所述计算机指令被处理器执行时,实现如权利要求1~11任一项所述的控制用户访问对象方法。

25.一种存储权限信息的方法,其特征在于,包括:将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;

以及

生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;以及将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。

26.根据权利要求25所述的方法,其特征在于,包括:将一个或以上角色与所述至少两个节点中的一个或以上节点相关联,其中与所述父节点关联的一个或以上角色中的任何角色,拥有与所述父节点的一个或以上子节点相对应的一个或以上的权限;以及将所述用户与所述一个或以上角色中的至少一个角色相关联,其中所述用户具有对应于所述至少一个角色的权限。

27.根据权利要求26所述的方法,其特征在于,包括:在所述数据结构中添加、删除或修改所述至少两个节点中的一个或以上节点。

28.根据权利要求27所述的方法,其特征在于,删除所述数据结构中所述父节点中的第一节点,包括:从所述数据结构中选择需要删除的所述第一节点;

撤销所述第一节点与相应角色之间的关联;

撤销所述第一节点的所有子节点与相应角色之间的关联;以及删除所述第一节点和所述第一节点的所有子节点。

29.根据权利要求27所述的方法,其特征在于,删除所述数据结构中所述父节点中的第一节点,包括:从所述数据结构中选择需要删除的所述第一节点;

撤销所述第一节点与相应角色之间的关联;

从所述数据结构中选择所述第一节点的所有子节点中的需要删除的至少一个子节点;

撤销所述至少一个子节点与至少一个相应角色之间的关联;

删除所述第一节点和所述第一节点的至少一个子节点;以及将所述第一节点的其余子节点与所述数据结构中的至少一个节点相关联。

30.根据权利要求27所述的方法,其特征在于,修改所述数据结构中所述一个或以上子节点中的第二节点,包括:从所述数据结构中选择需要修改的所述第二节点,所述第二节点具有第一父节点;以及将所述第二节点与第二父节点相关联,

其中,

与所述第二节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,与所述第一父节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,以及与所述第二父节点相对应的一个或以上角色的角色相关联的用户具有对应于所述第二节点的权限。

31.根据权利要求30所述的方法,其特征在于,包括:撤销所述第二节点与所述第一父节点之间的关联,其中从与所述第一父节点对应的一个或以上角色相关联的用户的权限中撤销与所述第二节点相对应的权限。

32.根据权利要求27所述的方法,其特征在于,在所述数据结构中添加第三节点,包括:将所述第三节点与所述至少两个节点中的至少一个父节点和/或至少一个子节点相关联;

将所述第三节点与权限相关联;以及

将所述第三节点与角色相关联。

33.一种存储权限信息的系统,其特征在于,包括数据结构确定模块和关联模块;

所述数据结构确定模块用于将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:所述数据结构确定模块用于生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;以及所述数据结构确定模块用于生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;

以及

所述关联模块用于将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。

34.根据权利要求33所述的系统,其特征在于,所述关联模块进一步用于:将一个或以上角色与所述至少两个节点中的一个或以上节点相关联,其中与所述父节点关联的一个或以上角色中的任何角色,拥有与所述父节点的一个或以上子节点相对应的一个或以上的权限;以及将所述用户与所述一个或以上角色中的至少一个角色相关联,其中所述用户具有对应于所述至少一个角色的权限。

35.根据权利要求34所述的系统,其特征在于,进一步包括修改模块,所述修改模块用于:在所述数据结构中添加、删除或修改所述至少两个节点中的一个或以上节点。

36.根据权利要求35所述的系统,其特征在于,所述修改模块进一步用于:从所述数据结构中选择需要删除的所述第一节点;

撤销所述第一节点与相应角色之间的关联;

撤销所述第一节点的所有子节点与相应角色之间的关联;以及删除所述第一节点和所述第一节点的所有子节点。

37.根据权利要求35所述的系统,其特征在于,所述修改模块进一步用于:从所述数据结构中选择需要删除的所述第一节点;

撤销所述第一节点与相应角色之间的关联;

从所述数据结构中选择所述第一节点的所有子节点中的需要删除的至少一个子节点;

撤销所述至少一个子节点与至少一个相应角色之间的关联;

删除所述第一节点和所述第一节点的至少一个子节点;以及将所述第一节点的其余子节点与所述数据结构中的至少一个节点相关联。

38.根据权利要求35所述的系统,其特征在于,所述修改模块进一步用于:从所述数据结构中选择需要修改的所述第二节点,所述第二节点具有第一父节点;以及将所述第二节点与第二父节点相关联,

其中,

与所述第二节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,与所述第一父节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,以及与所述第二父节点相对应的一个或以上角色的角色相关联的用户具有对应于所述第二节点的权限。

39.根据权利要求38所述的系统,其特征在于,所述修改模块进一步用于:撤销所述第二节点与所述第一父节点之间的关联,其中从与所述第一父节点对应的一个或以上角色相关联的用户的权限中撤销与所述第二节点相对应的权限。

40.根据权利要求35所述的系统,其特征在于,所述修改模块进一步用于:将所述第三节点与所述至少两个节点中的至少一个父节点和/或至少一个子节点相关联;

将所述第三节点与权限相关联;以及

将所述第三节点与角色相关联。

41.一种存储权限信息的装置,其特征在于,包括至少一个存储介质以及至少一个处理器;

所述至少一个存储介质用于存储计算机指令;

所述至少一个处理器用于执行所述计算机指令以实现权利要求25~32中任一项所述的存储权限信息的方法。

42.一种计算机可读存储介质,所述存储介质存储有计算机指令,当所述计算机指令被处理器执行时,实现如权利要求25~32任一项所述的存储权限信息的方法。

说明书 :

控制用户访问对象的系统和方法

技术领域

[0001] 本申请涉及信息安全领域,更具体地,涉及用于存储权限信息和基于权限信息控制用户访问对象的系统和方法。

背景技术

[0002] 权限管理系统广泛用于大多数已安装的集中式和分布式操作系统。当用户(或用户程序)请求访问对象(例如资源(例如,文件、数据库))或对资源执行操作(例如,读取、写入、编辑或删除)时,权限管理系统通常基于权限信息执行访问校验以处理请求。权限管理系统可以定义权限信息和/或将权限信息存储为数据结构,以便于管理权限信息。数据结构的设计会影响权限管理的精细化程度和灵活性(例如,权限信息之间继承关系的管理)。精细化权限控制和多层级权限继承关系可以降低用户操作和维护的成本。因此,希望提供用于将权限信息存储为更精细或可组织的数据结构,并且更有效地基于权限信息控制用户访问对象的系统和方法。

发明内容

[0003] 本申请实施例之一提供一种控制用户访问对象的方法,所述方法可以包括:获取用户访问对象的请求;基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及执行访问校验以处理所述请求;其中,所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;所述请求包含至少一个需要校验的关键节点的节点信息;以及执行访问校验以处理所述请求包括:确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,允许所述访问对象的请求。
[0004] 本申请实施例之一提供一种控制用户访问对象的系统,所述系统可以包括获取模块、权限确定模块和访问校验模块;所述获取模块用于获取用户访问对象的请求;所述权限确定模块用于基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及所述访问校验模块用于执行访问校验以处理所述请求;其中,所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;所述请求包含至少一个需要校验的关键节点的节点信息;以及所述访问校验模块用于确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,所述访问校验模块用于允许所述访问对象的请求。
[0005] 本申请实施例之一提供一种控制用户访问对象的装置,包括至少一个存储介质以及至少一个处理器;所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现控制用户访问对象的方法。
[0006] 本申请实施例之一提供一种计算机可读存储介质,所述存储介质存储有计算机指令,当所述计算机指令被处理器执行时,实现控制用户访问对象方法。
[0007] 本申请实施例之一提供一种存储权限信息的方法,所述方法包括:将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;以及生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;以及将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。
[0008] 本申请实施例之一提供一种存储权限信息的系统,所述系统包括数据结构确定模块和关联模块;所述数据结构确定模块用于将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:所述数据结构确定模块用于生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;以及所述数据结构确定模块用于生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;以及所述关联模块用于将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。
[0009] 本申请实施例之一提供一种存储权限信息的装置,包括至少一个存储介质以及至少一个处理器;所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现存储权限信息的方法。
[0010] 本申请实施例之一提供一种计算机可读存储介质,所述存储介质存储有计算机指令,当所述计算机指令被处理器执行时,实现存储权限信息的方法。
[0011] 本申请实施例之一提供一种控制用户访问对象的方法,所述方法可以在具有一个或以上处理器和一个或以上存储设备的计算设备上实现,所述方法包括:基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及执行访问校验以处理所述请求;其中,所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;所述请求包含至少一个需要校验的关键节点的节点信息;以及执行访问校验以处理所述请求包括:确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,允许所述访问对象的请求。
[0012] 在一些实施例中,所述每个有向无环图结构允许所述至少两个权限之间的权限继承,所述父节点具有所述父节点的一个或以上子节点对应的一个或以上权限。
[0013] 在一些实施例中,所述用户的访问权限信息包括与所述一个或以上权限相关联的所述用户的一个或以上角色。
[0014] 在一些实施例中,所述对象包括对资源执行的操作。
[0015] 在一些实施例中,所述至少一个有向无环图结构包括第一有向无环图结构,所述第一有向无环图结构包括与功能操作权限相关联的所述至少两个节点中的至少两个第一节点。
[0016] 在一些实施例中,所述对象包括资源。
[0017] 在一些实施例中,所述至少一个有向无环图结构包括第二有向无环图结构,所述第二有向无环图结构包括与数据范围权限相关联的所述至少两个节点中的至少两个第二节点。
[0018] 在一些实施例中,所述至少两个权限至少包括以下其中之一:允许所述用户授予其他用户权限的权限,为其他用户创建权限的权限,查询用户权限的权限,修改用户权限的权限,以及撤销用户权限的权限。
[0019] 在一些实施例中,所述方法进一步包括:对所述至少一个关键节点中的每个关键节点,从所述每个关键节点遍历至所述至少一个有向无环图结构的根节点;确定是否遍历到所述访问权限信息表示的所述一个或以上权限之一;在确定遍历到所述访问权限信息表示的所述一个或以上权限之一时,确定存在所述匹配;以及在确定没有遍历到所述访问权限信息表示的所述一个或以上权限时,确定不存在所述匹配。
[0020] 在一些实施例中,所述方法进一步包括:验证所述访问对象的请求中包含的所述至少一个关键节点的节点信息。
[0021] 在一些实施例中,所述方法进一步包括:在确定所述访问对象的请求中包含的所述至少一个关键节点的节点信息未通过验证时,拒绝所述请求。
[0022] 本申请实施例之一提供一种控制用户访问对象的系统,所述系统可以包括至少一个存储指令集的计算机可读存储介质,以及被配置为与所述至少一个计算机可读存储介质通信的至少一个处理器。当执行所述指令集时,所述至少一个处理器可以用于获取用户访问对象的请求;基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及执行访问校验以处理所述请求;其中,所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;所述请求包含至少一个需要校验的关键节点的节点信息;以及执行访问校验以处理所述请求包括:确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,允许所述访问对象的请求。
[0023] 在一些实施例中,所述每个有向无环图结构允许所述至少两个权限之间的权限继承,所述父节点具有所述父节点的一个或以上子节点对应的一个或以上权限。
[0024] 在一些实施例中,所述用户的访问权限信息包括与所述一个或以上权限相关联的所述用户的一个或以上角色。
[0025] 在一些实施例中,所述对象包括对资源执行的操作。
[0026] 在一些实施例中,所述至少一个有向无环图结构包括第一有向无环图结构,所述第一有向无环图结构包括与功能操作权限相关联的所述至少两个节点中的至少两个第一节点。
[0027] 在一些实施例中,所述对象包括资源。
[0028] 在一些实施例中,所述至少一个有向无环图结构包括第二有向无环图结构,所述第二有向无环图结构包括与数据范围权限相关联的所述至少两个节点中的至少两个第二节点。
[0029] 在一些实施例中,所述至少两个权限至少包括以下其中之一:允许所述用户授予其他用户权限的权限,为其他用户创建权限的权限,查询用户权限的权限,修改用户权限的权限,以及撤销用户权限的权限。
[0030] 在一些实施例中,对所述至少一个关键节点中的每个关键节点,所述至少一个处理器可以进一步用于:从所述每个关键节点遍历至所述至少一个有向无环图结构的根节点;确定是否遍历到所述访问权限信息表示的所述一个或以上权限之一;在确定遍历到所述访问权限信息表示的所述一个或以上权限之一时,确定存在所述匹配;以及在确定没有遍历到所述访问权限信息表示的所述一个或以上权限时,确定不存在所述匹配。
[0031] 在一些实施例中,所述至少一个处理器可以进一步用于:验证所述访问对象的请求中包含的所述至少一个关键节点的节点信息。
[0032] 在一些实施例中,在确定所述访问对象的请求中包含的所述至少一个关键节点的节点信息未通过验证时,所述至少一个处理器可以进一步用于:拒绝所述请求。
[0033] 本申请实施例之一提供一种非暂时性计算机可读介质,包括用于控制用户访问对象的至少一组指令,当由计算设备的一个或以上处理器执行所述至少一组指令时,所述至少一组指令可以使所述计算设备执行一种方法,所述方法包括:获取用户访问对象的请求;基于一个或以上预定义访问许可和一个或以上用户之间的映射关系,确定所述用户的访问权限信息,所述用户的访问权限信息表示一个或以上权限;以及执行访问校验以处理所述请求;其中,所述一个或以上权限包含在至少两个权限中,所述至少两个权限存储在一个或以上存储设备的存储器中的数据结构中,所述数据结构包括至少一个有向无环图结构,每个有向无环图结构包括至少两个节点和至少两个有向边,每个节点代表一个权限,每个有向边包括从所述至少两个节点中的父节点到子节点的方向;所述请求包含至少一个需要校验的关键节点的节点信息;以及执行访问校验以处理所述请求包括:确定所述至少一个关键节点的节点信息是否与所述访问权限信息所表示的所述一个或以上权限之一匹配;以及在确定存在所述匹配时,允许所述访问对象的请求。
[0034] 本申请实施例之一提供一种存储权限信息的方法,所述方法可以在具有一个或以上处理器和一个或以上存储设备的计算设备上实现,所述方法包括:将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;以及生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;以及将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。
[0035] 在一些实施例中,所述方法进一步包括:将一个或以上角色与所述至少两个节点中的一个或以上节点相关联,其中与所述父节点关联的一个或以上角色中的任何角色,拥有与所述父节点的一个或以上子节点相对应的一个或以上的权限;以及将所述用户与所述一个或以上角色中的至少一个角色相关联,其中所述用户具有对应于所述至少一个角色的权限。
[0036] 在一些实施例中,所述方法进一步包括:在所述数据结构中添加、删除或修改所述至少两个节点中的一个或以上节点。
[0037] 在一些实施例中,所述方法进一步包括:从所述数据结构中选择需要删除的所述第一节点;撤销所述第一节点与相应角色之间的关联;撤销所述第一节点的所有子节点与相应角色之间的关联;以及删除所述第一节点和所述第一节点的所有子节点。
[0038] 在一些实施例中,所述方法进一步包括:从所述数据结构中选择需要删除的所述第一节点;撤销所述第一节点与相应角色之间的关联;从所述数据结构中选择所述第一节点的所有子节点中的需要删除的至少一个子节点;撤销所述至少一个子节点与至少一个相应角色之间的关联;删除所述第一节点和所述第一节点的至少一个子节点;以及将所述第一节点的其余子节点与所述数据结构中的至少一个节点相关联。
[0039] 在一些实施例中,所述方法进一步包括:从所述数据结构中选择需要修改的所述第二节点,所述第二节点具有第一父节点;以及将所述第二节点与第二父节点相关联,其中,与所述第二节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,与所述第一父节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,以及与所述第二父节点相对应的一个或以上角色的角色相关联的用户具有对应于所述第二节点的权限。
[0040] 在一些实施例中,所述方法进一步包括:撤销所述第二节点与所述第一父节点之间的关联,其中从与所述第一父节点对应的一个或以上角色相关联的用户的权限中撤销与所述第二节点相对应的权限。
[0041] 在一些实施例中,所述方法进一步包括:将所述第三节点与所述至少两个节点中的至少一个父节点和/或至少一个子节点相关联;将所述第三节点与权限相关联;以及将所述第三节点与角色相关联。
[0042] 本申请实施例之一提供一种存储权限信息的系统,所述系统可以包括至少一个存储指令集的计算机可读存储介质,以及被配置为与所述至少一个计算机可读存储介质通信的至少一个处理器。当执行所述指令集时,所述至少一个处理器可以用于:将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;以及生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;以及将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。
[0043] 在一些实施例中,所述至少一个处理器可以进一步用于:将一个或以上角色与所述至少两个节点中的一个或以上节点相关联,其中与所述父节点关联的一个或以上角色中的任何角色,拥有与所述父节点的一个或以上子节点相对应的一个或以上的权限;以及将所述用户与所述一个或以上角色中的至少一个角色相关联,其中所述用户具有对应于所述至少一个角色的权限。
[0044] 在一些实施例中,所述至少一个处理器可以进一步用于:在所述数据结构中添加、删除或修改所述至少两个节点中的一个或以上节点。
[0045] 在一些实施例中,所述至少一个处理器可以进一步用于:从所述数据结构中选择需要删除的所述第一节点;撤销所述第一节点与相应角色之间的关联;撤销所述第一节点的所有子节点与相应角色之间的关联;以及删除所述第一节点和所述第一节点的所有子节点。
[0046] 在一些实施例中,所述至少一个处理器可以进一步用于:从所述数据结构中选择需要删除的所述第一节点;撤销所述第一节点与相应角色之间的关联;从所述数据结构中选择所述第一节点的所有子节点中的需要删除的至少一个子节点;撤销所述至少一个子节点与至少一个相应角色之间的关联;删除所述第一节点和所述第一节点的至少一个子节点;以及将所述第一节点的其余子节点与所述数据结构中的至少一个节点相关联。
[0047] 在一些实施例中,所述至少一个处理器可以进一步用于:从所述数据结构中选择需要修改的所述第二节点,所述第二节点具有第一父节点;以及将所述第二节点与第二父节点相关联,其中,与所述第二节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,与所述第一父节点对应的一个或以上角色相关联的用户具有对应于所述第二节点的权限,以及与所述第二父节点相对应的一个或以上角色的角色相关联的用户具有对应于所述第二节点的权限。
[0048] 在一些实施例中,所述至少一个处理器可以进一步用于:撤销所述第二节点与所述第一父节点之间的关联,其中从与所述第一父节点对应的一个或以上角色相关联的用户的权限中撤销与所述第二节点相对应的权限。
[0049] 在一些实施例中,所述至少一个处理器可以进一步用于:将所述第三节点与所述至少两个节点中的至少一个父节点和/或至少一个子节点相关联;将所述第三节点与权限相关联;以及将所述第三节点与角色相关联。
[0050] 本申请实施例之一提供一种非暂时性计算机可读介质,包括用于存储权限信息的至少一组指令,当由计算设备的一个或以上处理器执行所述至少一组指令时,所述至少一组指令可以使所述计算设备执行一种方法,所述方法包括:将所述权限信息存储为数据结构,所述数据结构包括至少一个有向无环图结构,包括:生成所述至少一个有向无环图结构的至少两个节点,每个节点代表访问对象的权限;以及生成所述至少一个有向无环图结构的至少两个有向边,每个有向边包括在所述至少两个节点中从父节点到所述父节点的一个或以上子节点的方向;以及将用户与由所述至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。
[0051] 本申请的一部分附加特性可以在下面的描述中进行说明。通过对以下描述和相应附图的研究或者对实施例的生产或操作的了解,本申请的一部分附加特征对于本领域技术人员是明显的。本申请的特征可以通过对以下描述的具体实施例的各种方面的方法、手段和组合的实践或使用得以实现和达到。

附图说明

[0052] 本申请将通过示例性实施例进行进一步描述。这些示例性实施例将通过附图进行详细描述。附图未按比例绘制。这些实施例并非限制性的,在这些实施例中,相同的符号表示相同的部件,其中:
[0053] 图1是根据本申请的一些实施例所示的示例性权限管理系统的示意图;
[0054] 图2是根据本申请的一些实施例所示的计算设备的示例性组件的示意图;
[0055] 图3是根据本申请的一些实施例所示的示例性移动设备的示例性硬件和/或软件组件的示意图;
[0056] 图4是根据本申请的一些实施例所示的示例性处理引擎的框图;
[0057] 图5是根据本申请的一些实施例所示的控制用户访问对象的示例性过程的流程图;
[0058] 图6是根据本申请的一些实施例所示的执行访问校验以处理请求的示例性过程的流程图;
[0059] 图7是根据本申请的一些实施例所示的确定至少一个关键节点的节点信息是否与访问权限信息所表示的权限匹配的示例性过程的流程图;
[0060] 图8是根据本申请所示的一些实施例的存储权限信息的示例性过程的流程图;
[0061] 图9是根据本申请的一些实施例所示的删除数据结构中的节点的示例性过程的流程图;
[0062] 图10是根据本申请的一些实施例所示的修改数据结构中的节点的示例性过程的流程图;
[0063] 图11A是根据本申请的一些实施例所示的示例性数据结构的示意图;
[0064] 图11B是根据本申请的一些实施例所示的示例性数据结构的示意图;
[0065] 图12A是根据本申请的一些实施例所示的数据结构中的示例性节点修改的示意图;
[0066] 图12B是根据本申请的一些实施例所示的数据结构中的示例性节点修改的示意图;以及
[0067] 图13是根据本申请的一些实施例所示的控制用户访问对象的示例性过程的示意图。

具体实施方式

[0068] 为了更清楚地说明本发明的技术方案,下文将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例。对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构和操作。
[0069] 如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“所述”等词并非特指单数,也可包括复数。需进一步理解的是,本申请中使用的术语“包括”和/或“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,还可以包括其它的步骤和元素。
[0070] 虽然本申请对根据本申请的实施例的系统中的某些模块做出了各种引用,然而,任何数量的不同模块可以被使用并运行在客户端和/或服务器上。这些模块旨在说明,而不是为了限制本申请的范围。可以在系统和方法的不同方面使用不同的模块。
[0071] 根据本申请的一些实施例,流程图用于说明由系统执行的操作。应当理解的是,前面或下面的操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或以上操作。
[0072] 参考如下所述的附图描述本申请的实施例的技术方案。显然,所描述的实施例并不是详尽的也不是限制性的。基于本申请中所阐述实施例,本领域普通技术人员在没有任何创造性工作的情况下获得的其他实施例在本申请的范围内。
[0073] 此外,本申请中的系统和方法可以应用于需要权限管理和/或访问控制的任何应用场景。例如,本申请的系统和方法可以应用于不同的运输系统,包括陆地、海洋、航空航天等或其任意组合。运输系统可以为使用各种车辆的用户提供运输服务。所述运输服务的车辆可以包括出租车、私家车、顺风车、公交车、火车、动车、高铁、地铁、船舶、飞机、飞船、热气球、无人驾驶车辆、自行车、三轮车、摩托车等或其任意组合。本申请的系统或方法可适用于出租车服务、司机服务、快递服务、拼车服务、公交车服务、外卖服务、司机招聘服务、班车服务、旅行服务等,或其任何组合。又例如,本申请的系统或方法可以应用于导航服务、购物服务、住宅服务、基于位置的服务(LBS)等,或其任何组合。本申请的系统和方法的应用场景可以包括网页、浏览器插件、客户端、定制系统、企业内部分析系统、人工智能机器人等,或其任意组合。
[0074] 本申请的一个方面涉及控制用户访问对象的系统和方法。所述系统和方法可以从用户获取访问对象的请求。所述请求包括需要校验的至少一个关键节点的节点信息。所述系统和方法可以基于一个或以上预定义的访问许可和一个或以上用户之间的映射关系来确定用户的访问权限信息。用户的访问权限信息可以表示一个或以上权限。所述一个或以上权限可以包括在作为数据结构存储在存储器中的至少两个权限中。数据结构可以包括至少一个有向无环图(DAG)结构。每个DAG结构可以包括至少两个节点和至少两个有向边。每个节点可以表示权限。每个有向边可以包括从父节点到父节点的子节点的方向。所述系统和方法还可以执行访问校验以处理所述请求。例如,所述系统和方法可以确定至少一个关键节点的节点信息是否与访问权限信息表示的一个或以上权限之一匹配。所述系统和方法可以在确定存在匹配项时准许所述访问对象的请求。
[0075] 本申请的另一方面涉及存储权限信息的系统和方法。所述系DAG结构。为了确定数据结构,所述系统和方法可以生成至少一个DAG结构的至少两个节点。每个节点可以表示访问对象的权限。所述系统和方法还可以生成至少一个DAG结构的至少两个有向边。每个有向边可以包括从父节点到父节点的一个或以上子节点的方向。所述系统和方法还可以将用户与由至少两个节点中的一个或以上节点表示的一个或以上访问权限相关联。
[0076] 因此,所述系统和方法可以将权限信息存储为数据结构(例如,一个或以上DAG结构)以实现多层级权限继承,并且更有效地基于权限信息控制用户访问对象。
[0077] 图1是根据本申请的一些实施例所示的示例性权限管理系统的示意图。权限管理系统100可以包括服务器110、网络120、存储设备130和/或客户终端140。
[0078] 服务器110可以为权限管理系统100执行权限存储、权限处理和/或权限控制。在一些实施例中,服务器110可以是单个服务器,也可以是服务器组。所述服务器组可以是集中式的,也可以是分布式的(例如,服务器110可以是分布式的系统)。在一些实施例中,服务器110可以是本地的,也可以是远程的。例如,服务器110可以经由网络120访问存储在客户终端140和/或存储设备130中的信息和/或数据。又例如,服务器110可以直接连接到客户终端
140和/或存储设备130以访问存储信息和/或数据。在一些实施例中,服务器110可以在云平台上实施。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。在一些实施例中,服务器110可以在计算设备200上实现,该计算设备200具有本申请中的图2中所示的一个或以上组件,或者具有本申请中的图3中所示的一个或以上组件的移动设备300。
[0079] 在一些实施例中,服务器110可以包括处理引擎112,处理引擎112可以处理信息和/或数据以执行本申请中描述的一个或以上的功能。例如,处理引擎112可以从用户获取访问对象的请求。又例如,处理引擎112可以验证请求中包括的至少一个关键节点的节点信息。又例如,处理引擎112可以基于一个或以上预定义的访问许可和一个或以上用户之间的映射关系来确定用户的访问权限信息。又例如,处理引擎112可以执行访问校验以处理所述请求。又例如,处理引擎112可以将权限信息存储为数据结构。又例如,处理引擎112可以将用户与由一个或以上节点表示的一个或以上访问权限相关联。又例如,处理引擎112可以将一个或以上角色与一个或以上节点相关联。又例如,处理引擎112可以将用户将与一个或以上节点相关联的一个或以上角色的至少一个角色相关联。又例如,处理引擎112可以添加、删除或修改数据结构中的至少两个节点的一个或以上节点。
[0080] 在一些实施例中,所述处理引擎112可包括一个或以上处理引擎(例如,单芯片处理引擎或多芯片处理引擎)。仅作为示例,处理引擎112可以包括一个或以上硬件处理器,例如中央处理单元(CPU)、特定应用集成电路(ASIC)、特定应用指令集处理器(ASIP)、图像处理单元(GPU)、物理运算处理单元(PPU)、数字信号处理器(DSP)、现场可程序门阵列(FPGA)、可程序逻辑设备(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等或其任意组合。
[0081] 网络120可以促进信息和/或数据的交换。在一些实施例中,权限管理系统100中的一个或以上组件(例如,服务器110、存储设备130和客户终端140)可以经由网络120将信息和/或数据发送到权限管理系统100中的其他组件。例如,处理引擎112可以经由网络120从客户终端140获取访问对象的请求。又例如,处理引擎112可以通过网络120从存储设备130获取数据结构。在一些实施例中,网络120可以是任意形式的有线网络或无线网络,或其任意组合。仅作为示例,网络120可以包括缆线网络、有线网络、光纤网络、远程通信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共开关电话网络(PSTN)、蓝牙网络、ZigBee网络、近场通信(NFC)网络等或上述举例的任意组合。在一些实施例中,网络120可以包括一个或以上网络接入点。例如,网络120可以包括有线或无线网络接入点,如基站和/或互联网交换点120-1、120-2、……,通过权限管理系统100的一个或以上部件可以连接到网络120以交换数据和/或信息。
[0082] 存储设备130可以存储数据和/或指令。在一些实施例中,存储设备130可以存储从客户终端140和/或处理引擎112处获取的数据。例如,存储设备130可以存储从客户终端140接收的访问对象的请求。又例如,存储设备130可以存储由处理引擎112确定的包括权限信息的数据结构。在一些实施例中,存储设备130可以存储服务器110用来执行或使用来完成本申请中描述的示例性方法的数据和/或指令。例如,存储设备130可以存储处理引擎112可以执行或用于验证请求中包括的至少一个关键节点的节点信息的指令。又例如,存储设备130可以存储处理引擎112可以执行或用于基于一个或以上预定义的访问许可和一个或以上用户之间的映射关系来确定用户的访问权限信息的指令。又例如,存储设备130可以存储处理引擎112可以执行或用于执行访问校验以处理请求的指令。又例如,存储设备130可以存储处理引擎112可以执行或用于将权限信息存储为数据结构的指令。又例如,存储设备
130可以存储处理引擎112可以执行或用于添加、删除或修改数据结构中的至少两个节点中的一个或以上节点的指令。
[0083] 在一些实施例中,存储设备可包括大容量储存器、可移动储存器、易失性读写内存、只读存储器(ROM)等或其任意组合。示例性的大容量存储器可以包括磁盘、光盘、固态磁盘等。示例性可移动存储器可以包括闪存驱动器、软盘、光盘、存储卡、压缩盘、磁带等。示例性易失性读写存储器可以包括随机存取存储器(RAM)。示例性RAM可包括动态随机存取存储器(DRAM)、双倍数据速率同步动态随机存取存储器(DDR SDRAM)、静态随机存取存储器(SRAM)、晶闸管随机存取存储器(T-RAM)和零电容随机存取存储器(Z-RAM)等。示例性只读存储器可以包括掩模型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(PEROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字多功能磁盘只读存储器等。在一些实施例中,所述存储设备130可在云端平台上执行。仅作为示例,云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等,或其任意组合。
[0084] 在一些实施例中,存储设备130可以连接到网络120以与权限管理系统100(例如,服务器110、客户终端140)中的一个或以上组件通信。权限管理系统100中的一个或以上组件可以经由网络120访问存储设备130中存储的数据或指令。在一些实施例中,存储设备130可以直接连接到权限管理系统100(例如,服务器110、客户终端140)中的一个或以上组件或与之通信。在一些实施例中,存储设备130可以是服务器110的一部分。
[0085] 在一些实施例中,客户终端140可以包括移动设备140-1、平板计算机140-2、笔记本电脑140-3等,或其任何组合。在一些实施例中,移动设备140-1可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、增强现实设备等,或其任意组合。在一些实施例中,智能家居设备可以包括智能照明设备、智能电器控制设备、智能监控设备、智能电视、智能摄像机、对讲机等,或其任意组合。在一些实施例中,可穿戴设备可以包括手环、鞋袜、眼镜、头盔、手表、衣物、背包、智慧配饰等,或其任意组合。在一些实施例中,移动设备可以包括移动电话、个人数字助理(PDA)、游戏设备、导航设备、销售点(POS)、膝上型电脑、台式机等,或其任意组合。在一些实施例中,虚拟现实设备和/或增强型虚拟现实设备可以包括虚拟现实头盔、虚拟现实眼镜、虚拟现实眼罩、增强现实头盔、增强现实眼镜、增强现实眼罩等,或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括Google GlassTM、RiftConTM、FragmentsTM、Gear VRTM等。
[0086] 应当注意权限管理系统100仅仅是为了说明的目的而提供的,并不意图限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出多种修改或变化。例如,权限管理系统100还可以包括数据库、信息源等。又例如,权限管理系统100可以在其他设备上实现类似或不同的功能。然而,这些修改和变化不会背离本申请的范围。在一些实施例中,权限管理系统100的两个或以上组件可以集成到单个组件中。例如,存储设备130可以集成到客户终端140中,如连接存储设备130和客户终端140的虚线双向箭头所示。又例如,服务器110可以集成到客户终端140中,如连接服务器110和客户终端140的虚线双向箭头所示。又例如,服务器110、存储器130和客户终端140可以集成到单个组件中,如连接存储设备130和客户终端140的虚线双向箭头、连接服务器110和客户终端140的虚线双向箭头以及连接服务器110和存储设备130的虚线双向箭头所示。在一些实施例中,可以省略一个或以上组件。例如,可以省略网络120。又例如,可以省略服务器110,并且客户终端140可以实现服务器110的一个或以上功能。
[0087] 图2是根据本申请的一些实施例所示的计算设备的示例性组件的示意图,可以在所述计算设备上可以实现服务器110、存储设备130和/或客户终端140。特定系统(例如,权限管理系统100)可以使用功能框图来解释包含一个或以上用户界面的硬件平台。这种计算机可以是通用计算机,也可以是专用计算机。根据本申请的一些实施例,两种类型的计算机可以用于实现任何特定系统(例如,权限管理系统100)。计算设备200可以用于实现执行本申请中公开的一个或以上功能的任何组件。例如,计算设备200可以实现如本申请所述的权限管理系统100的任何组件。在图1-2中,仅出于方便的目的仅示出了一个计算机设备。在提交本申请时,本领域的普通技术人员应当理解,如本申请所述的与权限管理有关的计算机功能可以在多个类似平台上以分布式方式实现,以分配处理负载。
[0088] 例如,计算设备200可以包括与网络相连接通信端口250,以实现数据通信。计算设备200还可以包括处理器(例如,处理器220),其形式为一个或以上处理器(例如,逻辑电路),用于执行程序指令。例如,处理器可以包括接口电路和其中的处理电路。接口电路可以用于从总线210接收电信号,其中电信号编码用于处理电路的结构化数据和/或指令。处理电路可以进行逻辑计算,然后将结论、结果和/或指令编码确定为电信号。然后,接口电路可以经由总线210从处理电路发出电信号。
[0089] 示例性计算设备可以包括内部通信总线210,程序存储和不同形式的数据存储,包括:例如,磁盘270,以及只读存储器(ROM)230或随机存取存储器(RAM)240,用于由计算设备处理和/或发送的各种数据文件。示例性计算设备也可以包括储存于ROM 230、RAM 240和/或其他形式的非暂时性存储介质中的能够被处理器220执行的程序指令。本申请的方法和/或流程可以以程序指令的方式实现。计算设备200还包括I/O组件260,支持计算机和其他组件之间的输入/输出。计算设备200也可以通过网络通信接收程序设计和数据。
[0090] 仅用于说明,图2中仅示出了一个CPU和/或处理器。还可以考虑多个CPU和/或处理器;因此,由本申请中描述的一个CPU和/或处理器执行的操作和/或方法步骤也可以由多个CPU和/或处理器联合或单独执行。例如,如果在本申请中,计算设备200的CPU和/或处理器执行步骤A和步骤B,则应该理解,步骤A和步骤B也可以由两个不同的CPU和/或处理器(例如第一处理器执行步骤A,第二处理器执行步骤B,或者第一和第二处理器共同执行步骤A和B)。
[0091] 图3是根据本申请的一些实施例所示的示例性移动设备的示例性硬件和/或软件组件的示意图,根据本申请的一些实施例,可以在其上实现客户终端140。如图3所示,移动设备300可以包括通信平台310、显示器320、图形处理单元(GPU)330、中央处理单元(CPU)340、输入/输出350、内存360和存储器390。CPU 340可以包括接口电路和类似于处理器220的处理电路。在一些实施例中,任何其他合适的组件,包括但不限于系统总线或控制器(未TM
示出),也可包括在移动设备300内。在一些实施例中,移动操作系统370(例如,iOS 、AndroidTM、Windows PhoneTM等)和一个或以上应用程序380可以从存储器390加载到存储器
360中,以便由CPU 340执行。应用程序380可以包括浏览器或任何其他合适的移动应用程序,用于从移动设备300上的权限管理系统接收和呈现与请求或其他信息有关的信息。用户与信息流的交互可以通过I/O设备350实现,并经由网络120提供给处理引擎112和/或权限管理系统100的其他组件。
[0092] 为了实现上述各种模块、单元及其功能,计算机硬件平台可以用作一个或以上元件(例如,图2中描述的服务器110的组件)的硬件平台。由于这些硬件元素、操作系统和程序语言是常见的,因此可以假设本领域普通技术人员熟悉这些技术,并且可以根据本申请中描述的技术提供权限管理所需的信息。具有用户界面的计算机可以用作个人计算机(PC)或其他类型的工作站或终端设备。在正确编程之后,具有用户界面的计算机可以用作服务器。可以认为本领域普通技术人员也可以熟悉这种类型的计算机设备的这种结构、程序或一般操作。因此,没有针对附图描述额外的解释。
[0093] 图4是根据本申请的一些实施例所示的示例性处理引擎的框图。在一些实施例中,处理引擎112可以包括获取模块410、验证模块420、权限确定模块430、访问校验模块440、数据结构确定模块450、关联模块460和修改模块470。模块可以是处理引擎112的至少一部分的硬件电路。这些模块也可以作为一个应用程序或一组由处理引擎112读取和执行的指令实现。此外,模块可以是硬件电路和应用/指令的任何组合。例如,当处理引擎112执行应用程序或指令集时,模块可以是处理引擎112的一部分。
[0094] 获取模块410可以用于获取与权限管理系统100相关的数据和/或信息。在一些实施例中,获取模块410可以从用户处获取访问对象的请求。在一些实施例中,对象可以包括资源。因此,所述请求可以是访问特定资源的请求(例如,查询资源的请求、获取资源的请求、查看资源的请求等)。在一些实施例中,对象可以包括对资源执行的操作。因此,所述请求可以是对资源执行操作(例如,读取、写入、发布、订阅、编辑、添加、删除、修改、更新等)的请求。在一些实施例中,所述请求还可以包括用户的身份信息(例如,用户标识(ID)、电话号码、姓名等)。
[0095] 在一些实施例中,获取模块410可以从用户终端(例如,客户终端140)、存储设备130和/或外部数据源(未示出)获取与权限管理系统100有关的数据和/或信息。在一些实施例中,获取模块410可以经由网络120获取与权限管理系统100相关的数据和/或信息。
[0096] 验证模块420可以用于验证请求中包含的至少一个关键节点的节点信息。在一些实施例中,验证模块420可以基于一个或以上DAG结构中的至少两个节点来验证至少一个关键节点的节点信息。关于DAG结构和关键节点的更多描述见本申请的其他部分(例如,图5及其描述)。例如,验证模块420可以确定至少一个关键节点的节点信息是否包含在一个或以上DAG结构中。当确定至少一个关键节点的节点信息包含在一个或以上DAG结构中时,验证模块420可以确定请求中包含的至少一个关键节点的节点信息通过验证。当确定至少一个关键节点的节点信息未包含在一个或以上DAG结构中,验证模块420可以确定请求中包含的至少一个关键节点的节点信息未通过验证,并且可以拒绝该请求。
[0097] 权限确定模块430可以用于确定用户的访问权限信息。在一些实施例中,权限确定模块430可以基于一个或以上预定义的访问许可和一个或以上用户之间的映射关系来确定用户的访问权限信息。在一些实施例中,一个或以上预定义的访问许可和一个或以上用户之间的映射关系可以由权限管理系统100的用户(例如,管理员)手动预设,或者可以根据不同情况由权限管理系统100的一个或以上组件(例如,处理引擎112)确定。在一些实施例中,一个或以上预定义的访问许可和一个或以上用户之间的映射关系可以存储在权限管理系统100的存储设备(例如,存储设备130)或外部存储设备中,处理引擎112可以访问存储设备并检索映射关系。在一些实施例中,权限确定模块430可以基于用户的一个或以上角色来确定用户的访问权限信息。关于确定用户的访问权限信息的更多描述可以见本申请的其它部分(例如,图5及其描述)。
[0098] 访问校验模块440可以执行访问校验以处理请求。在一些实施例中,访问校验模块440可以通过确定至少一个关键节点的节点信息是否与用户的访问权限信息表示的一个或以上权限之一匹配来执行访问校验。当确定至少一个关键节点的节点信息与访问权限信息表示的一个或以上权限之一匹配时,访问校验模块440可以准许该请求。当确定至少一个关键节点的节点信息与访问权限信息所表示的一个或以上权限都不匹配时,访问校验模块
440可以拒绝该请求。关于访问校验的更多描述可以见本申请的其它部分(例如,图5、6、7及其描述)。
[0099] 数据结构确定模块450可以将权限信息存储为数据结构。在一些实施例中,数据结构确定模块450可以将权限信息存储为数据结构存储在权限管理系统100的存储设备(例如,存储设备130)中。在一些实施例中,数据结构可以包括一个或以上DAG结构,如本申请其它部分所述(例如,图5、11A-12B及其描述)。在一些实施例中,数据结构确定模块450可以生成DAG结构的至少两个节点和/或至少两个有向边。关于DAG结构的至少两个节点和至少两个有向边的生成的更多描述见本申请的其它部分(例如,图5、8及其描述)。
[0100] 关联模块460可以用于确定与权限管理系统100相关的数据和/或信息之间的关联。在一些实施例中,关联模块460可以将用户与由数据结构中的一个或以上节点表示的一个或以上访问权限相关联。在一些实施例中,关联模块460可以将一个或以上角色与数据结构的一个或以上节点相关联。在一些实施例中,关联模块460可以将用户与一个或以上角色相关联。关于关联的更多描述见本申请的其它部分(例如,图8及其描述)。在一些实施例中,关联可以存储在权限管理系统100的存储设备(例如,存储设备130)中,关联模块460可以访问存储设备并检索权限管理和/或控制中的关联。
[0101] 修改模块470可以用于修改与数据结构有关的数据和/或信息。在一些实施例中,修改模块470可以在数据结构中添加一个或以上节点。在一些实施例中,修改模块470可以删除数据结构中的一个或以上节点。在一些实施例中,修改模块470可以修改数据结构中的一个或以上节点。关于在数据结构中添加、删除和修改一个或以上节点的更多描述见本申请的其它部分(例如,图8、9、10及其描述)。
[0102] 应当注意上述处理引擎112的描述仅仅是为了说明的目的而提供的,并不意图限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,变化和修改不会背离本申请的范围。例如,可以省略数据结构确定模块450、关联模块460和/或修改模块470。在一些实施例中,处理引擎112可以分为两个或以上引擎。例如,处理引擎112可以分为控制引擎和存储引擎,其中控制引擎可以包括获取模块410、验证模块420、权限确定模块430和访问校验模块440,并且存储引擎可以包括数据结构确定模块450、关联模块460和修改模块470。
[0103] 图5是根据本申请的一些实施例所示的控制用户访问对象的示例性过程的流程图。在一些实施例中,流程500可以在权限管理系统100中实现。例如,流程500可以作为指令的形式存储在存储设备130和/或存储器(例如,ROM 230、RAM 240等)中,并且由服务器110(例如,服务器110中的处理引擎112,或服务器110中的处理引擎112的处理器210)调用和/或执行。
[0104] 在510中,处理引擎112(例如,获取模块410)可以获取来自用户的访问对象的请求。在一些实施例中,处理引擎112可以经由网络120从客户终端140获取请求。
[0105] 在一些实施例中,客户终端140可以通过安装在客户终端140中的应用程序(例如,图3中的应用程序380)或经由网络120在浏览器中的网页建立与服务器110的通信(例如,无线通信)。在一些实施例中,应用程序可以与服务(例如,在线服务)相关联。例如,所述应用程序可以与出租车服务、拼车服务、顺风车服务、快递服务、在线购物服务等相关联。在一些实施例中,应用程序可以与企业信息管理工具相关联。在一些实施例中,用户可以通过以下方式将请求发送到处理引擎112(例如,获取模块410),例如,在应用程序的界面上选择或确认一个或以上选项(例如,动作按钮、功能菜单等)。在一些实施例中,用户可以通过客户终端140的触摸屏选择或确认应用程序的界面上的选项。在一些实施例中,安装在客户终端140中的应用可以指示客户终端140连续地或周期性地监视来自用户的请求,并通过网络
120自动将请求发送到处理引擎112。
[0106] 所述请求可以是访问对象的请求。在一些实施例中,对象可以包括资源。因此,所述请求可以是访问特定资源的请求(例如,查询资源的请求、获取资源的请求、查看资源的请求等)。例如,在出租车服务中,所述请求可以是查看在北京发起的订单的请求。如本文所用,资源可以指存储在权限管理系统100的一个或以上存储设备或外部数据源中的信息资源(例如,数据库、文件、数据)或操作资源(例如,程序、进程)。在一些实施例中,信息资源可以包括与企业的管理和/或操作有关的信息或数据,例如,订单数量、收入、工作报告、员工信息等。在一些实施例中,对象可以包括对资源执行的操作。因此,所述请求可以是对资源执行操作(例如,读取、写入、发布、订阅、编辑、添加、删除、修改、更新等)的请求。例如,出租车服务中,用户可以发起修改订单的请求。在一些实施例中,所述请求还可以包括用户的身份信息(例如,用户标识(ID)、电话号码、姓名等)。
[0107] 在一些实施例中,用户可以具有访问对象的权限(或授权)。在一些实施例中,用户可能没有访问对象的权限(或授权)。响应于所述请求,处理引擎112可以校验用户是否具有权限(或授权),如操作520-540所示。当确定用户具有所述权限时,可以允许用户对所述对象的访问。当确定用户没有所述权限时,可以拒绝用户对多数对象的访问(例如,权限管理系统100可以给用户提供提示消息,提醒用户他/她没有权限)。
[0108] 在520中,处理引擎112(例如,验证模块420)可以验证所述请求中包含的至少一个关键节点的节点信息。
[0109] 在一些实施例中,处理引擎112将至少两个权限存储为数据结构,并将数据结构存储在权限管理系统100的一个或以上存储设备(例如,存储设备130)中,如本申请其它部分所述(例如,图8及其描述)。在一些实施例中,权限可以包括数据范围权限和/或功能操作权限。数据范围权限可以与数据访问权限和/或数据访问范围相关联(也称为对数据范围的权限)。在一些实施例中,数据范围权限可以指示是否允许用户访问系统(例如,权限管理系统100)的资源。功能操作权限可以与一个或以上数据操作功能相关联。在一些实施例中,功能操作权限可以指示是否允许用户对系统的数据执行操作(例如,读取、写入、发布、订阅、编辑、添加、删除、修改或更新)。在一些实施例中,存储在数据结构中的至少两个权限可以包括向一个或以上其他用户授予用户权限的权限、为一个或以上其他用户创建权限的权限、查询一个或以上用户的权限的权限、修改一个或以上用户的权限的权限、和/或撤销一个或以上用户的权限的权限。例如,在出租车服务中,用户A可以具有授予用户B和/或为用户B创建取消订单的权限的权限。
[0110] 在一些实施例中,数据结构可以包括一个或以上DAG结构。如本申请所使用的,DAG可以指没有回路的有向图。DAG结构可以包括至少两个节点和至少两个有向边(参见图11A-12B)。DAG结构中的至少两个节点可以通过一个或以上子/父关系彼此相关联。节点之间的子/父关系可以由至少两个有向边表示。每个有向边可以包括从父节点指向父节点的子节点的方向。例如,如果节点A通过有向边A→B连接到节点B,则节点A被视为节点B的父节点,节点B被视为节点A的子节点。至少两个节点中的每个节点可以具有零个、一个或以上个父节点。例如,如图11A所示,节点1101a具有零个父节点。节点1101b、节点1101c、节点1101d、节点1101e和/或节点1101f具有一个父节点。如果节点1101c和节点1101e可以进一步经由从节点1101c指向节点1101e的有向边连接,那么节点1101e可以具有两个父节点(例如,节点1101b和节点1101c)。至少两个节点中的每个节点可以具有零个、一个或以上个子节点。
例如,节点1101d、节点1101e和节点1101f具有零个子节点。节点1101c具有一个子节点。节点1101a和/或节点1101b具有两个子节点。如果一个节点没有父节点(例如,图11A中的节点
1101a、图11B中的节点1103a),也就是说,这个节点是DAG结构中的最顶层节点,那么该节点也可以被称为DAG结构中的根节点。
[0111] 在一些实施例中,每个节点可以代表权限。DAG结构允许至少两个权限之间的权限继承。在一些实施例中,父节点可具有对应于父节点的一个或以上子节点的一个或以上权限。例如,假设用户A具有对应于父节点的权限,则用户A具有对应于父节点的一个或以上子节点的一个或以上权限。具体地说,如图11A所示,如果用户A具有对应于节点1101b的权限(例如,管理订单),并且节点1101b具有两个子节点(例如,节点1101d、节点1101e),那么用户A也可以具有对应于节点1101d(例如,取消订单)和节点1101e(例如,修改订单)的一个或以上权限。在一些实施例中,本申请中的DAG结构可以提供多层级权限继承关系。多层级权限继承可以指由至少两个节点表示的至少两个权限可以被设计为多个层级。较高层级的节点可以具有与较低层级中的一个或以上节点相对应的一个或以上权限。例如,如图11A所示,DAG结构可以具有三个层级。节点1101a可以处于数据结构的第一层级。节点1101b和节点1101c可以处于数据结构的第二层级。节点1101d、节点1101e和节点1101f可以处于数据结构的第三层级。如果用户A具有与第一层级中的节点1101a相对应的权限,则用户A可以具有与第二层级中的节点1101b和节点1101c、第三层级中的节点1101d、节点1101e和节点1101f相对应的权限。
[0112] 如上所述,权限可以包括功能操作权限和/或数据范围权限。在一些实施例中,处理引擎112可以将至少两个功能操作权限和至少两个数据范围权限存储为一个DAG结构。在一个DAG结构中,节点的第一部分可以与功能操作权限相关联,节点的第二部分节点可以与数据范围权限相关联。在一些实施例中,处理引擎112可以将至少两个功能操作权限存储为第一DAG结构。第一DAG结构可以包括与功能操作权限相关联的至少两个第一节点(例如,图11A中所示的功能操作权限)。在一些实施例中,处理引擎112还可以将至少两个数据范围权限存储为第二DAG结构。第二DAG结构可以包括与数据范围权限相关联的至少两个第二节点(例如,图11B中所示的数据范围权限)。
[0113] 在一些实施例中,在510中获取的请求可以包括需要验证的至少一个关键节点的节点信息(也称为第一节点信息,相对于下面描述的第二节点信息和第三节点信息)。每个关键节点可以对应于用户请求的并且与DAG结构中的节点相关联的权限。例如,如果用户发起修改肯德基北京店的订单的请求,则有两个需要验证的关键节点,包括“修改订单”和“北京店”。
[0114] 在一些实施例中,处理引擎112可以基于一个或以上DAG结构中的至少两个节点来验证至少一个关键节点的节点信息。例如,处理引擎112可以确定至少一个关键节点的节点信息是否包括在一个或以上DAG结构中。在一些实施例中,当确定至少一个关键节点的节点信息包括在一个或以上DAG结构中时,处理引擎112可以确定请求中包括的至少一个关键节点的节点信息通过验证,流程500可以进行到操作530。在一些实施例中,当确定至少一个关键节点的节点信息未包括在一个或以上DAG结构中时,处理引擎112可以确定请求中包括的至少一个关键节点的节点信息未通过验证,并且可以拒绝该请求(因此,可以终止流程500)。
[0115] 在530中,处理引擎112(例如,权限确定模块430)可以基于一个或以上预定义的访问许可和一个或以上用户之间的映射关系来确定所述用户的访问权限信息。
[0116] 在一些实施例中,一个或以上预定义的访问许可和一个或以上用户之间的映射关系可以由权限管理系统100的用户(例如,管理员)手动预设,或者可以根据不同情况由权限管理系统100的一个或以上组件(例如,处理引擎112)确定。在一些实施例中,一个用户可具有一个或以上预定义的访问许可。在一些实施例中,可以向一个或以上用户授权预定义的访问许可。用户的访问权限信息可以指用户的预定义访问许可。
[0117] 在一些实施例中,一个或以上预定义的访问许可和一个或以上用户之间的映射关系可以存储在权限管理系统100的存储设备(例如,存储设备130)或外部存储设备中,处理引擎112可以访问存储设备并检索映射关系。
[0118] 在一些实施例中,处理引擎112可以基于用户的一个或以上角色来确定用户的访问权限信息。在一些实施例中,处理引擎112可以将用户分配给(或与之相关联)一个或以上角色。在一些实施例中,一个或以上角色中的每个角色可以与授权给每个角色中的用户的一个或以上权限相关联。例如,在组织中,可以为各种职称(例如,餐厅经理、餐厅员工)创建一个或以上角色。在一些实施例中,处理引擎112可以将某些权限分配给特定角色。如果将成员或员工(或其他系统用户)分配给特定角色,则成员或员工可以获取与特定角色相关联的权限。例如,如果将用户分配给餐厅经理的角色,并且将一个或以上权限(例如,取消订单和/或修改订单)与餐厅经理的角色相关联,则用户可以具有取消订单和/或修改订单的权限。在一些实施例中,用户的访问权限信息还可以包括一个或以上与一个或以上权限相关联的用户角色。
[0119] 在540中,处理引擎112(例如,访问校验模块440)可以执行访问校验以处理所述请求。在一些实施例中,处理引擎112可以通过确定至少一个关键节点的节点信息是否与用户的访问权限信息表示的一个或以上权限之一匹配来执行访问校验。
[0120] 例如,对于至少一个关键节点中的每个关键节点,处理引擎112可以从每个关键节点遍历到至少一个DAG结构的根节点。处理引擎112可以确定是否遍历到由访问权限信息表示的一个或以上权限之一。当确定遍历到由访问权限信息表示的一个或以上权限之一时,处理引擎112可以确定存在匹配。如果请求中包含的一个或以上的关键节点与访问权限信息所表示的一个或以上权限之间的匹配都存在,处理引擎112可以确定至少一个关键节点的节点信息与访问权限信息表示的一个或以上权限之一匹配。当确定没有遍历到访问权限信息表示的一个或以上权限中的任何一个权限时,处理引擎112可以确定该匹配不存在。也就是说,处理引擎112可以确定至少一个关键节点的节点信息与访问权限信息表示的一个或以上的权限都不匹配。
[0121] 当确定所述至少一个关键节点的节点信息与所述访问权限信息表示的一个或以上权限之一匹配时,处理引擎112可以准许所述请求。当确定所述至少一个关键节点的节点信息与所述访问权限信息表示的一个或以上权限都不匹配时,处理引擎112可以拒绝该请求。关于访问校验的更多描述可以见本申请的其它部分(例如,图6、7及其描述)。
[0122] 应该注意的是,上述仅出于说明的目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可添加或省略一项或以上操作。例如,可以在流程500中添加存储操作。在存储操作中,处理引擎112可以存储在存储介质(例如,存储设备130)中存储与数据结构相关联的信息和/或数据。又例如,可以省略操作
520。也就是说,在一些实施例中,处理引擎112可以在不验证请求中包含的至少一个关键节点的节点信息的情况下执行访问校验。在一些实施例中,预定义访问许可与用户之间的映射关系可以包括第一级映射关系和第二级映射关系。在一些实施例中,第一级映射关系可以包括用户ID、角色和数据范围权限之间的关联关系,第二级映射关系可以包括角色和功能操作权限之间的关联关系。附加地或替代地,第一级映射关系可以包括用户ID、角色和功能操作权限之间的关联关系,第二级映射关系可以包括角色和数据范围权限之间的关联关系。在一些实施例中,处理引擎112可以基于第一级映射关系获取用户的角色信息和与用户的访问权限信息相对应的第二节点信息。在一些实施例中,处理引擎112可以获取与角色信息相对应的第三节点信息。在一些实施例中,处理引擎112可以基于存储在权限管理系统
100的一个或以上存储设备或外部存储设备中的一个或以上预定义访问许可与一个或以上角色之间的映射关系(例如,第二级映射关系)获取与角色信息对应的第三节点信息。
[0123] 图6是根据本申请的一些实施例所示的执行访问校验以处理请求的示例性过程的流程图。在一些实施例中,流程600可以在权限管理系统100中实现。例如,流程600可以作为指令的形式存储在存储设备130和/或存储器(例如,ROM 230、RAM 240等)中,并且由服务器110(例如,服务器110中的处理引擎112,或服务器110中的处理引擎112的处理器210)调用和/或执行。在一些实施例中,可以根据流程600的一个或以上操作来执行操作540。
[0124] 在610中,处理引擎112(例如,访问校验模块440)可以确定至少一个关键节点的节点信息是否与访问权限信息表示的权限(例如,在530中确定的访问权限信息)匹配。
[0125] 在一些实施例中,处理引擎112可以通过从每个关键节点遍历到至少一个DAG结构的根节点,确定所述至少一个关键节点的节点信息是否与所述访问权限信息表示的一个或以上权限之一匹配。例如,处理引擎112可以确定是否遍历到访问权限信息表示的一个或以上权限之一。当确定遍历到访问权限信息表示的一个或以上权限之一时,处理引擎112可以确定存在匹配。如果请求中包含的一个或以上关键节点与访问权限信息表示的一个或以上权限之间的匹配都存在,则处理引擎112可以确定至少一个关键节点的节点信息与访问权限信息表示的权限匹配。当确定没有遍历到访问权限信息表示的一个或以上权限中的任何一个时,处理引擎112可以确定不存在匹配。因此,处理引擎112可以确定至少一个关键节点的节点信息与访问权限信息表示的权限不匹配。关于确定至少一个关键节点的节点信息是否与访问权限信息表示的权限匹配的更多描述见本申请的其它部分(例如,图7及其描述)。
[0126] 当确定至少一个关键节点的节点信息与访问权限信息表示的权限匹配时,在620中,处理引擎112(例如,访问校验模块440)可以准许所述请求。例如,如果用户发起访问资源的请求,并且至少一个关键节点的节点信息与用户的访问权限信息表示的权限相匹配,则处理引擎112可以准许所述请求,因此,可以允许用户访问所述资源。又例如,如果用户发起对资源执行操作的请求,至少一个关键节点的节点信息与用户的访问权限信息表示的权限相匹配,则处理引擎112可以准许该请求,因此,可以允许用户对所述资源执行操作。
[0127] 当确定至少一个关键节点的节点信息与访问权限信息表示的权限不匹配时,在630中,处理引擎112(例如,访问校验模块440)可以拒绝所述请求。例如,如果用户发起访问资源的请求,并且至少一个关键节点的节点信息与访问权限信息表示的权限不匹配,则处理引擎112可以拒绝所述请求,因此,可以不允许用户访问所述资源。又例如,如果用户发起对资源执行操作的请求,至少一个关键节点的节点信息与访问权限信息表示的权限不匹配,则处理引擎112可以拒绝该请求,因此,可以不允许用户对资源执行操作。
[0128] 应该注意的是,上述仅出于说明目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。
[0129] 图7是根据本申请的一些实施例所示的确定至少一个关键节点的节点信息是否与访问权限信息所表示的权限匹配的示例性过程的流程图。在一些实施例中,流程700可以在权限管理系统100中实现。例如,流程700可以作为指令的形式存储在存储设备130和/或存储器(例如,ROM 230、RAM 240等)中,并且由服务器110(例如,服务器110中的处理引擎112,或服务器110中的处理引擎112的处理器210)调用和/或执行。在一些实施例中,可以根据流程700的一个或以上操作来执行操作610。
[0130] 在710中,处理引擎112(例如,访问校验模块440)可以从每个关键节点遍历到至少一个DAG结构的根节点。
[0131] 在一些实施例中,对于每个关键节点,处理引擎112可以从所述关键节点遍历到包括关键节点的一个或以上DAG结构的一个或以上根节点。在一些实施例中,在每个DAG结构中,处理引擎112可以沿着DAG结构的一个或以上有向边从关键节点遍历到根节点。例如,如果节点C是关键节点,节点B是节点C的父节点,节点A是节点B的父节点(即,节点A→节点B→节点C),并且节点A是DAG结构的根节点,则处理引擎112可以从节点C遍历到节点B,然后从节点B遍历到节点A。关于节点的遍历的更多描述见本申请的其它部分(例如,图12A和12B及其描述)。
[0132] 在720中,处理引擎112(例如,访问校验模块440)可以确定是否遍历到由访问权限信息表示的一个权限。
[0133] 在一些实施例中,处理引擎112可以确定是否遍历到与用户的访问权限信息表示的一个或以上权限之一相关联的节点。例如,如果处理引擎112从节点C(即关键节点)遍历到节点B,然后到节点A(即根节点),并且节点B与用户的访问权限信息表示的一个或以上权限之一相关联,则处理引擎112可以确定遍历到所述权限。关于遍历过程的更多描述见本申请其它部分(例如,图12A和12B及其描述)。
[0134] 当确定遍历到访问权限信息表示的一个权限时,在730中,处理引擎112(例如,访问校验模块440)可以确定存在匹配。如果请求中包含的一个或以上关键节点与访问权限信息表示的一个或以上权限之间的匹配都存在,处理引擎112可以准许所述请求。
[0135] 当确定没有遍历到访问权限信息表示的任何权限,在740中,处理引擎112(例如,访问校验模块440)可以确定不存在匹配。因此,处理引擎112可以拒绝所述请求。
[0136] 应该注意的是,上述仅出于说明目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。
[0137] 图8是根据本申请所示的一些实施例的存储权限信息的示例性过程的流程图。在一些实施例中,流程800可以在权限管理系统100中实现。例如,流程800可以作为指令的形式存储在存储设备130和/或存储器(例如,ROM 230、RAM 240等)中,并且由服务器110(例如,服务器110中的处理引擎112,或服务器110中的处理引擎112的处理器210)调用和/或执行。
[0138] 在810中,处理引擎112(例如,数据结构确定模块450)可以将权限信息存储为数据结构。在一些实施例中,处理引擎112可以将权限信息存储为数据结构,并将数据结构存储在权限管理系统100的存储设备(例如,存储设备130)中。权限信息可以包括与至少两个权限和/或至少两个权限之间的关系(例如,继承关系)有关的信息。关于权限的更多描述见本申请的其它部分(例如,图5及其描述)。
[0139] 在一些实施例中,数据结构可以包括一个或以上DAG结构,如本申请其它部分所述(例如,图5及其描述)。在一些实施例中,处理引擎112可以生成DAG结构的至少两个节点。每个节点可以表示访问对象的权限。例如,处理引擎112可以将功能操作权限存储为第一DAG结构,如图11A所示。第一DAG结构中的每个节点可以表示对资源执行操作的权限。又例如,处理引擎112可以将对数据范围权限存储为第二DAG结构,如图11B所示。第二DAG结构中的每个节点可以表示访问资源的权限。在一些实施例中,处理引擎112还可以生成DAG结构的至少两个有向边。每个有向边可以包括从至少两个节点中的父节点到父节点的一个或以上子节点的方向。在一些实施例中,DAG结构可以允许或促进至少两个权限之间的权限继承。例如,父节点可以具有对应于父节点的一个或以上子节点的一个或以上权限。
[0140] 在820中,处理引擎112(例如,关联模块460)可以将用户与一个或以上节点表示的一个或以上访问权限相关联。
[0141] 用户的一个或以上访问权限可以由权限管理系统100的用户(例如,管理员)手动预设,或者可以根据不同情况由权限管理系统100的一个或以上组件(例如,处理引擎112)确定。在一些实施例中,用户与由一个或以上节点表示的一个或以上访问权限之间的关联可以存储在权限管理系统100的存储设备中,处理引擎112可以访问存储设备并在权限的管理和/或控制中检索用户的一个或以上访问权限。
[0142] 在830中,处理引擎112(例如,关联模块460)可以将一个或以上角色与至少两个节点中的一个或以上节点相关联。
[0143] 在一些实施例中,处理引擎112可以将角色与至少两个节点中的一个或以上节点相关联。在一些实施例中,处理引擎112可以将一个或以上角色与一个节点相关联。在一些实施例中,与父节点相关联的一个或以上角色中的任何角色可以具有对应于父节点的一个或以上子节点的一个或以上权限。例如,如果节点A是节点B、节点C和节点D的父节点,并且处理引擎112将餐厅经理的角色与节点A相关联,餐厅经理的角色可以具有对应于节点B(例如,取消订单)、节点C(修改订单)和节点D(例如,查看订单)的权限。具体地,如图11A所示,如果处理引擎112将餐厅经理的角色与节点1101b相关联(例如,管理订单),餐厅经理的角色还可以具有对应于节点1101d(例如,取消订单)和节点1101e(例如,修改订单)的权限。
[0144] 在一些实施例中,一个或以上角色与一个或以上节点之间的关联可以存储在权限管理系统100的存储设备中,处理引擎112可以访问存储设备并在权限的管理和/或控制中检索一个或以上角色与一个或以上节点之间的关联。
[0145] 在840中,处理引擎112(例如,关联模块460)可以将用户与一个或以上角色中的至少一个角色相关联。在一些实施例中,与角色相关联的用户可以具有与角色相对应的权限。例如,如果处理引擎112将用户与餐厅经理的角色相关联,并且餐厅经理的角色具有至少两个权限(例如,取消订单和/或修改订单),则用户可以具有与餐厅经理的角色相关联的权限(例如,取消订单和/或修改订单)。
[0146] 在一些实施例中,处理引擎112可以添加、删除和/或修改数据结构中的至少两个节点中的一个或以上节点。在一些实施例中,处理引擎112可以删除数据结构中的父节点中的第一节点。例如,处理引擎112可以从数据结构中选择需要删除的第一节点。处理引擎112可以撤销第一节点和对应角色之间的关联。处理引擎112可以撤销第一节点的所有子节点与对应角色之间的关联。处理引擎112可以删除第一节点和第一节点的所有子节点。关于删除数据结构中第一节点的更多描述见本申请其它部分(例如,图9及其描述)。
[0147] 在一些实施例中,处理引擎112可以修改数据结构中的一个或以上子节点中的第二节点。处理引擎112可以从数据结构中选择需要修改的第二节点。第二节点可以具有第一父节点。处理引擎112可以撤销第二节点和第一父节点之间的关联。处理引擎112可以将第二节点与第二父节点相关联。关于修改数据结构中第二节点的更多描述见本申请其它部分(例如,图10及其描述)。
[0148] 在一些实施例中,处理引擎112可以在数据结构中添加第三节点。例如,处理引擎112可以将第三节点与数据结构中至少两个节点中的一个或以上子节点和/或一个或以上父节点相关联。处理引擎112可以在第三节点与第三节点的一个或以上子节点和/或一个或以上父节点之间生成一个或以上有向边。处理引擎112可以将第三节点与权限相关联。处理引擎112可以将第三节点与角色相关联。
[0149] 应该注意的是,上述仅出于说明目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可添加或省略一项或以上操作。例如,可以省略操作830和/或操作840。又例如,可以省略操作820。
[0150] 图9是根据本申请的一些实施例所示的删除数据结构中的节点的示例性过程的流程图。在一些实施例中,流程900可以在权限管理系统100中实现。例如,流程900可以作为指令的形式存储在存储设备130和/或存储器(例如,ROM 230、RAM 240等)中,并且由服务器110(例如,服务器110中的处理引擎112,或服务器110中的处理引擎112的处理器210)调用和/或执行。
[0151] 在910中,处理引擎112(例如,修改模块470)可以从数据结构(例如,DAG结构)中选择需要删除的第一节点。第一节点可以是数据结构中的至少两个节点中的任何节点。在一些实施例中,第一节点可具有一个或以上子节点。在一些实施例中,第一节点可以具有一个或以上父节点。
[0152] 在920中,处理引擎112(例如,修改模块470)可以撤销所述第一节点和对应角色之间的关联。例如,处理引擎112可以删除与第一节点相对应的角色。又例如,处理引擎112可以将对应于第一节点的角色与数据结构中的另一节点相关联。
[0153] 在930中,处理引擎112(例如,修改模块470)可以撤销所述第一节点的所有子节点与对应角色之间的关联。在一些实施例中,处理引擎112可以通过一个或以上有向边从第一节点遍历到第一节点的所有子节点,并且撤销第一节点的所有子节点与对应角色之间的关联。例如,处理引擎112可以删除与第一节点的所有子节点相对应的角色。又例如,处理引擎112可以将所有子节点对应的角色与数据结构中的一个或以上其他节点相关联。具体地,如图11A所示,如果要删除节点1101b,则处理引擎112可以撤销节点1101b与对应角色之间的关联。处理引擎112还可以撤销节点1101d与对应角色之间的关联,以及节点1101e与对应角色之间的关联。
[0154] 在940中,处理引擎112(例如,修改模块470)可以删除所述第一节点和所述第一节点的所有子节点。例如,处理引擎112可以从数据结构中移除第一节点和第一节点的所有子节点。在一些实施例中,处理引擎112可以移除连接在第一节点和第一节点的所有子节点之间的一个或以上有向边。
[0155] 应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,处理引擎112可以删除第一节点和第一节点的所有子节点中的一个或以上子节点。例如,处理引擎112可以选择第一节点的所有子节点中的需要删除的一个或以上子节点。处理引擎112可以撤销一个或以上所选子节点与对应角色之间的关联。处理引擎112可以删除一个或以上所选的子节点。处理引擎112可以将第一节点的子节点的其余部分与数据结构中的一个或以上其他节点相关联。具体地,如图11A所示,如果要删除节点1101b和节点1101b的子节点1101d,处理引擎112可以撤销节点1101b与对应角色之间的关联,和/或节点1101d与对应角色之间的关联。处理引擎
112可以删除节点1101b,节点1101d,连接节点1101a和节点1101b的有向边1102a,以及连接节点1101b和节点1101d的有向边1102c。处理引擎112可以通过在节点1101e与一个或以上其他节点(例如,节点1101a、节点1101c或节点1101f)之间生成一个或以上有向边来将节点
1101e与数据结构中的一个或以上其他节点(例如,节点1101a、节点1101c或节点1101f)相关联。
[0156] 图10是根据本申请的一些实施例所示的修改数据结构中的节点的示例性过程的流程图。在一些实施例中,流程1000可以在权限管理系统100中实现。例如,流程1000可以作为指令的形式存储在存储设备130和/或存储器(例如,ROM 230、RAM 240等)中,并且由服务器110(例如,服务器110中的处理引擎112,或服务器110中的处理引擎112的处理器210)调用和/或执行。
[0157] 在1010中,处理引擎112(例如,修改模块470)可以从数据结构(例如,DAG结构)中选择需要修改的第二节点。第二节点可以是数据结构中的至少两个节点中的任何节点。在一些实施例中,第二节点可以具有第一父节点。在一些实施例中,第二节点可以具有一个或以上子节点。
[0158] 在1020中,处理引擎112(例如,修改模块470)可以撤销所述第二节点和所述第一父节点之间的关联。例如,处理引擎112可以删除第二节点和第一父节点之间的有向边。
[0159] 在1030中,处理引擎112(例如,修改模块470)可以将所述第二节点与第二父节点相关联。例如,处理引擎112可以在第二节点和第二父节点之间生成有向边。有向边可以包括从第二父节点到第二节点的方向。因此,与第二节点对应的角色相关联的用户具有对应于第二节点的权限。与第二父节点对应的角色相关联的用户具有对应于第二节点的权限。因此,与第一父节点对应的角色相关联的用户不具有对应于第二节点的权限。关于对数据结构中的一个或以上节点的修改的更多描述见本申请其它部分(例如,图12A和12B及其描述)。
[0160] 应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可以省略一个或以上操作。例如,可以省略操作1020。处理引擎112可以将第二节点与第二父节点相关联,而不撤销第二节点和第一父节点之间的关联。具体地,如图11A所示,如果要修改节点1101e,则处理引擎112可以通过生成从节点1101c指向节点1101e的有向边来将节点1101e与节点1101c相关联。
[0161] 图11A是根据本申请的一些实施例所示的示例性数据结构的示意图。
[0162] 如图11A所示,数据结构可以包括第一DAG结构。第一DAG结构可以包括至少两个节点(例如,节点1101a、节点1101b、节点1101c、节点1101d、节点1101e和节点1101f)和至少两个有向边(例如,边1102a、边1102b、边1102c、边1102d和边1102e)。节点1101a可以是第一DAG结构的根节点。每个节点可以表示功能操作权限。以餐馆管理系统为例,节点1101b可以表示“管理订单”,节点1101c可以表示“管理菜品”,节点1101d可以表示“取消订单”,节点1101e可以表示“修改订单”,并且节点1101f可以表示“上下架菜品”。在一些实施例中,一个节点可以被视为数据结构中的一个或以上其他节点的父节点。同时,所述节点可以被视为数据结构中的一个或以上其他节点的子节点。例如,节点1101b可以是节点1101d和节点
1101e的父节点。节点1101b也可以是节点1101a的子节点。每个有向边可以包括从父节点到父节点的子节点的方向。例如,节点1101b可以是节点1101d和节点1101e的父节点,节点
1101d和节点1101e可以是节点1101b的子节点。因此,有向边1102c连接节点1101b和节点
1101d,包括从节点1101b到节点1101d的方向,以及在节点1101b和节点1101e之间连接的有向边1102d,包括从节点1101b到节点1101e的方向。
[0163] 第一DAG结构可以允许至少两个功能操作权限之间的权限继承。在一些实施例中,父节点可具有对应于父节点的一个或以上子节点的一个或以上权限。例如,如果处理引擎112将用户与对应于节点1101b的权限相关联(例如,管理订单),则用户还可以具有对应于节点1101d(例如,取消订单)和节点1101e(例如,修改订单)的权限。也就是说,用户可以具有餐厅管理系统中的管理订单、取消订单和修改订单的权限。又例如,如果处理引擎112将用户与对应于节点1101a的权限相关联,则用户还可以具有对应于节点1101b和节点1101c的权限。此外,用户还可以具有与节点1101d、节点1101e和节点1101f相对应的权限。也就是说,用户可以在餐馆管理系统中管理订单、管理菜品、取消订单、修改订单以及上下架菜品。
[0164] 图11B是根据本申请的一些实施例所示的示例性数据结构的示意图。
[0165] 如图11B所示,数据结构可以包括第二DAG结构。第二DAG结构可以包括至少两个节点(例如,节点1103a、节点1103b、节点1103c、节点1103d、节点1103e和节点1103f)和至少两个有向边(例如,边1104a、边1104b、边1104c、边1104d和边1104e)。节点1103a可以是第二DAG结构的根节点。每个节点可以表示数据范围权限。例如,节点1103a可以表示“KFC”,节点1103b可以表示“华北区”,节点1103c可以表示“华中区”,节点1103d可以表示“北京店”,节点1103e可以表示“天津店”,节点1103f可以表示“成都店”。每个有向边可以包括从父节点到父节点的子节点的方向。例如,节点1103b和节点1103c可以是节点1103a的子节点。节点
1103d和节点1103e可以是节点1103b的子节点。节点1103f可以是节点1103c的子节点。
[0166] 第二DAG结构可以允许至少两个数据范围权限之间的权限继承。在一些实施例中,父节点可具有对应于父节点的一个或以上子节点的一个或以上权限。例如,如果处理引擎112将用户与对应于节点1103b的权限(例如,华北区)相关联,则用户还可以具有对应于节点1103d(例如,北京店)和节点1103e(例如,天津店)的权限。也就是说,用户可以有权访问与华北区、北京店和天津店相关的数据。
[0167] 在一些实施例中,处理引擎112可以将一个或以上角色与第一DAG结构中的一个或以上节点和/或第二DAG结构中的一个或以上节点相关联。例如,处理引擎112可以将“餐厅员工”的角色与节点1101e(即,修改订单)和节点1101c(即,管理菜品)相关联,并且可以将“餐厅经理”的角色与节点1101b(即,管理订单)和节点1101c(即,管理菜品)相关联。仅用于说明目的,处理引擎112可以确定用户A的访问权限信息是“角色列表:餐厅员工;节点列表:北京店、天津店”。在这种情况下,用户A可能有权修改订单并在北京店和天津店上下架菜品。处理引擎112可以确定用户B的访问权限信息是“角色列表:餐厅经理;节点列表:华北区”。在这种情况下,用户B可能有权管理订单(包括例如取消订单和修改订单)并且在华北区(包括例如北京店和天津店)管理菜品(包括例如上下架菜品)。
[0168] 应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,数据结构可以包括一个DAG结构。例如,可以省略图11A中所示的第一DAG结构或图11B中所示的第二DAG结构。又例如,图11A中所示的第一DAG结构和图11B中所示的第二DAG结构可以集成到一个DAG结构中。在一个DAG结构中,节点的第一部分可以与功能操作权限相关联,第二部分节点可以与数据范围权限相关联。在一些实施例中,数据结构还可包括至少两个DAG结构。例如,数据结构可以包括如图11A所示的第一DAG结构,如图11B所示的第二DAG结构,以及第三DAG结构(未示出)。
第三DAG结构可以允许至少两个角色之间的角色继承。第三DAG结构可以包括至少两个节点和至少两个有向边。每个节点可以代表一个角色。以餐饮管理系统为例,第一示例性节点可以表示“餐厅经理”,第二示例性节点可以表示“餐厅员工”。此外,第一示例性节点可以是第二示例性节点的父节点。
[0169] 图12A是根据本申请的一些实施例所示的数据结构中的示例性节点修改的示意图。
[0170] 如图12A所示,数据结构可以包括DAG结构。DAG结构可以包括至少两个节点(例如,节点1201a、节点1201b、节点1201c、节点1201d、节点1201e、节点1201f、节点1201g、节点1201h和节点1201i)以及至少两个有向边。每个节点可以表示数据范围权限。例如,节点
1201a可以表示“公司ID”,节点1201b可以表示“华北区ID”,节点1201c可以表示“华南区ID”,节点1201d可以表示“北京ID”,节点1201e可以表示“天津ID”,节点1201f可以表示“上海ID”,节点1201g可以表示“杭州”,节点1201h可以表示“店铺A ID”,节点1201i可以表示“店铺B ID”。处理引擎112可以将用户A与节点1201b相关联,将用户B与节点1201d相关联,将用户C与节点1201h相关联,以及将用户D与节点1201c相关联。因此,用户A可以具有对应于节点1201b的数据范围权限(例如,“华北区ID”),用户B可以具有对应于节点1201d的数据范围权限(例如,“北京ID”),用户C可以具有对应于节点1201h的数据范围权限(例如,“店铺A ID”),并且用户D可以具有对应于节点1201c的数据范围权限(例如,“华南区ID”)。仅用于说明目的,处理引擎112可以修改DAG结构的节点1201d和节点1201e,如图12B所示。例如,处理引擎112可以撤销节点1201d和节点1201b之间的关联,并且将节点1201d与节点1201c相关联。处理引擎112可以撤销节点1201e和节点1201b之间的关联,并且将节点1201e与节点
1201c相关联。
[0171] 如果用户A发起访问由节点1201h表示的店铺A的请求,则处理引擎112可以从节点1201h遍历到DAG结构的根节点(例如,节点1201a)。处理引擎112可以确定是否遍历了用户A的访问权限信息表示的权限(例如,对应于节点1201b的权限)。例如,处理引擎112可以从节点1201h遍历到节点1201d、1201c,然后到达根节点1201a。当确定没有遍历到用户A的访问权限信息表示的权限(例如,对应于节点1201b的权限),处理引擎112可以拒绝所述用户A的请求。
[0172] 如果用户B发起访问由节点1201h表示的店铺A的请求,则处理引擎112可以从节点1201h遍历到DAG结构的根节点(例如,节点1201a)。处理引擎112可以确定是否遍历了用户B的访问权限信息表示的权限(例如,对应于节点1201d的权限)。当确定遍历到用户B的访问权限信息表示的权限(例如,对应于节点1201d的权限),处理引擎112可以准许所述用户B的请求。
[0173] 如果用户C发起访问由节点1201h表示的店铺A的请求,则处理引擎112可以从节点1201h遍历到DAG结构的根节点(例如,节点1201a)。处理引擎112可以确定是否遍历了用户C的访问权限信息表示的权限(例如,对应于节点1201h的权限)。当确定遍历到用户C的访问权限信息表示的权限(例如,对应于节点1201h的权限),处理引擎112可以准许所述用户C的请求。
[0174] 如果用户D发起访问由节点1201h表示的店铺A的请求,则处理引擎112可以从节点1201h遍历到DAG结构的根节点(例如,节点1201a)。处理引擎112可以确定是否遍历了用户D的访问权限信息表示的权限(例如,对应于节点1201c的权限)。当确定遍历到用户D的访问权限信息表示的权限(例如,对应于节点1201c的权限),处理引擎112可以准许所述用户D的请求。
[0175] 图13是根据本申请的一些实施例所示的控制用户访问对象的示例性过程的示意图。
[0176] 如图13所示,用户可以经由网络120经由安装在终端设备(例如,客户终端140)中的应用程序(例如,图3中的应用程序380)或操作系统(例如,餐馆管理服务系统)的浏览器中的网页向处理引擎112发送访问对象的请求。所述请求可以包括一个或以上关键节点。例如,用户可以通过以下方式发起在北京店上下架菜品的请求,例如,在应用程序的界面上选择或确认一个或以上选项(例如,动作按钮、功能菜单等)。请求中包括的关键节点可以是“北京店”和“上下架菜品”。在一些实施例中,所述请求还可以包括用户的身份信息,例如,如图13所示的用户标识(ID)10001。
[0177] 处理引擎112可以获取与一个或以上关键节点相对应的第一节点信息。在一些实施例中,处理引擎112可以从存储在权限管理系统100的一个或以上存储设备(例如,存储设备130)或外部存储设备中的节点信息中获取对应于一个或以上关键节点的第一节点信息。如图13所示,第一节点信息可以包括“北京店”和“上下架菜品”。在一些实施例中,处理引擎
112可以进一步验证第一节点信息(例如,在图11A和11B中所示的数据结构中),如结合操作
520所描述的。当确定第一节点信息验证通过时,处理引擎112可以将第一节点信息(也称为节点集合A)返回给权限管理系统100。如图13所示,节点集合A可以指[“北京店”、“上下架菜品”]。
[0178] 处理引擎112可以获取用户的访问权限信息。在一些实施例中,处理引擎112可以根据存储在权限管理系统100中的一个或以上存储设备或外部存储设备中的访问权限信息,基于一个或以上预定义访问许可和一个或以上用户之间的映射关系获取用户的访问权限信息。在一些实施例中,预定义访问许可与用户之间的映射关系可以包括第一级映射关系和第二级映射关系。在一些实施例中,第一级映射关系可以包括用户ID、角色和数据范围权限之间的关联关系,第二级映射关系可以包括角色和功能操作权限之间的关联关系。附加地或替代地,第一级映射关系可以包括用户ID、角色和功能操作权限之间的关联关系,第二级映射关系可以包括角色和数据范围权限之间的关联关系。
[0179] 在一些实施例中,处理引擎112可以基于第一级映射关系获取用户的角色信息和与用户的访问权限信息对应的第二节点信息(也称为节点集合C)。在一些实施例中,处理引擎112可以获取与角色信息对应的第三节点信息(也称为节点集合B)。在一些实施例中,处理引擎112可以基于存储在权限管理系统100的一个或以上存储设备或外部存储设备中的角色信息中的一个或以上预定义访问许可和一个或以上角色之间的映射关系(例如,第二级映射关系),获取与角色信息相对应的第三节点信息。处理引擎112可以从节点集合A的节点遍历到至少一个DAG结构的根节点。处理引擎112可以确定是否遍历到节点集合B和/或节点集合C中的节点之一。在确定遍历到节点集合B和/或节点集合C中的一个节点时,处理引擎112可以向操作系统返回“真”。因此,可以准允来自用户的请求。用户可以被允许在北京店上下架菜品。在确定没有遍历到节点集合B和/或节点集合C中的任何节点时,处理引擎112可以向操作系统返回“假”。因此,可以拒绝来自用户的请求。用户不被允许在北京店上下架菜品。
[0180] 仅用于说明目的,如图13所示,第一级映射关系可以包括“用户ID 1001;角色列表:餐厅员工;节点列表:北京店(参见图11B中的节点1103d)、天津店(参见图11B中的节点1103e)”,第二级映射关系可以包括“角色:餐厅助理;节点列表:修改订单(参见图11A中的节点1101e)、管理菜品(参见图11A中的节点1101c)。处理引擎112可以将第二节点信息返回给权限管理系统100。如图13所示,角色信息可以指[“餐厅员工”],并且节点集合C可以指[“北京店”、“天津店”]。处理引擎112可以将第三节点信息返回给权限管理系统100。如图13所示,节点集合B可以指[“修改订单”、“管理菜品”]。处理引擎112可以从节点集A[“北京店”、“上下架菜品”]的节点遍历到至少一个DAG结构的根节点(例如,图11A中所示的第一DAG结构、图11B中所示的第二DAG结构)。例如,处理引擎112可以从“上下架菜品”(参见节点
1101f)遍历到“管理菜品”(参见节点1101c),然后到第一DAG结构中的根节点1101a。处理引擎112还可以从“北京店”(参见节点1103d)遍历到“华北区”(参见节点1103b),然后到第二DAG结构中的根节点“KFC”(参见节点1103a)。处理引擎112可以确定是否遍历到节点集合B和/或节点集合C中的节点之一。具体地,如图13所示,处理引擎112可以确定在第一DAG结构中是否遍历到节点集合B[“修改订单”,“管理菜品”]中的节点之一。处理引擎112还可以确定在第二DAG结构中是否遍历到节点集合C[“北京店”、“天津店”]中的节点之一。在该示例中,可以遍历到节点集合B中的“管理菜品”(参见节点1101c),并可以遍历到节点集合C中的“北京店”(参见节点1103d),然后处理引擎112可以向操作系统返回“真”。因此,可以准许来自用户10001的请求,允许用户10001在北京店上下架菜品。
[0181] 又例如,如果第一级映射关系包括“用户ID 1001;角色列表:餐厅经理;节点列表:华北区(参见图11B中的节点1103b)”,第二级映射关系包括“角色:餐厅经理;节点列表:管理订单(参见图11A中的节点1101b、管理菜品(参见图11A中的节点1101c),角色信息可以指[“餐厅经理”],节点集合C可以指[“华北区”],节点集合B可以指[“管理订单”、“管理菜品”]。处理引擎112可以从节点集合A[“北京店”、“上下架菜品”]的节点遍历到至少一个DAG结构的根节点(例如,图11A中所示的第一DAG结构、图11B中所示的第二DAG结构)。例如,处理引擎112可以从“上下架菜品”(参见节点1101f)到“管理菜品”(参见节点1101c),然后到第一DAG结构中的根节点1101a。处理引擎112还可以从“北京店”(参见节点1103d)到“华北区”(参见节点1103b),然后到第二DAG结构中的根节点“KFC”(参见节点1103a)。处理引擎
112可以确定在第一DAG结构中是否遍历到节点集合B[“管理订单”、“管理菜品”]中的节点之一。处理引擎112还可以确定是否遍历到节点集合C[“华北区”]中的节点之一。在该示例中,可以遍历到节点集合B中的“管理菜品”(参见节点1101c),并且可以遍历到节点集合C中的“华北区”(参见节点1103b),然后处理引擎112可以向操作系统返回“真”。因此,可以准许来自用户10001的请求,允许用户10001在北京店上下架菜品。
[0182] 作为另一示例,如果第一级映射关系包括“用户ID 1001;角色列表:餐厅员工;节点列表:成都店(参见图11B中的节点1103f)”,第二级映射关系包括“角色:餐厅员工;节点列表:修改订单(参见图11A中的节点1101e)”,管理菜品(参见图11A中的节点1101c),角色信息可以是[“餐厅员工”],节点集合C可以是[“成都店”],节点集合B可以是[“修改订单”、“管理菜品”]。处理引擎112可以从节点集合A[“北京店”、“上下架菜品”]的节点遍历到至少一个DAG结构的根节点(例如,图11A中所示的第一DAG结构、图11B中所示的第二DAG结构)。例如,处理引擎112可以从“上下架菜品”(参见节点1101f)遍历到“管理菜品”(参见节点
1101c),然后到第一DAG结构中的根节点1101a。处理引擎112还可以从“北京店”(参见节点
1103d)遍历到“华北区”(参见节点1103b),然后到第二DAG结构中的根节点“KFC”(参见节点
1103a)。处理引擎112可以确定在第一DAG结构中是否遍历到节点集合B[“修改订单”、“管理菜品”]中的节点之一。处理引擎112还可以确定是否遍历到节点集合C[“成都店”]中的节点之一。在该示例中,可以遍历到节点集合B中的“管理菜品”(参见节点1101c),但是没有遍历到节点集合C中的“成都店”(参见节点1103f)。在一些实施例中,处理引擎112可以向操作系统返回“假”。因此,可以拒绝来自用户10001的请求,不允许用户10001在北京店上下架菜品(但是可以允许用户10001在成都店上下架菜品)。
[0183] 申请实施例可能带来的有益效果包括但不限于:(1)实现更精细化的角色权限控制;(2)数据节点之间通过DAG结构可以构成上下游关系,达到了权限的继承效果;(3)系统支持多个DAG结构交叉组合的权限控制,可以满足用户多样化的不同需求;(4)降低用户的操作与维护成本。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
[0184] 应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。
[0185] 上文已对基本概念做了描述,显然,对于阅读此申请后的本领域的普通技术人员来说,上述发明披露仅作为示例,并不构成对本申请的限制。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
[0186] 同时,本申请使用了特定词语来描述本申请的实施例。此外,本申请使用了特定术语来描述本申请的实施例。例如,术语“一个实施例”、“一实施例”及“一些实施例”意指与本申请的至少一个实施例相关的某一特征、结构或特性。因此,应当强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。
[0187] 此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件实施、可以完全由软件(包括韧体、常驻软件、微代码等)实施、也可以由硬件和软件组合实施,上述硬件或软件均可以被称为“模块”、“单元”、“组件”、“设备”或“系统”。此外,本申请的各方面可以采取体现在一个或以上计算机可读介质中的计算机程序产品的形式,其中计算机可读程序代码包含在其中。
[0188] 计算机可读信号介质可能包含一个内含有计算机程序代码的传播数据信号,例如在基带上或作为载波的一部分。这样的传播信号可以采用多种形式中的任何形式,包括电磁、光学等或其任何合适的组合。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通信、传播或传输供使用的程序。位于计算机可读信号介质上的程序代码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF等,或任何上述介质的组合。
[0189] 本申请各方面操作所需的计算机程序码可以用一种或以上程序语言的任意组合编写,包括面向对象程序设计,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序编程语言,如″C″编程语言,Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy或其它编程语言。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
[0190] 此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
[0191] 同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,本申请的该方法不应被解释为反映所声称的待扫描对象物质需要比每个权利要求中明确记载的更多特征的意图。实际上,实施例的特征要少于上述揭露的单个实施例的全部特征。