掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及权限管理技术领域,尤其涉及一种具有层级结构的权限数据存取的方法。

背景技术

权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不能多也不能少。通常将权限分为两类:功能权限和数据权限。具有层级结构的数据权限是指数据之间具有上下级关系,当用户具有上级权限时自动具有其下级权限。对于这种层级结构权限数据,一般有如下两种实现方式:

1、采用树的方式来存储和展示。在技术实现上,后台数据库存储树的父子关系,当前端应用(web界面或者接口应用)调用的时候,或者采用同步请求获取整棵树的数据,或者是异步请求,逐层展开。这种方式无论是针对具体人员、账号的授权还是针对一类人员的角色的授权,都将权限数据全量存储,存在很多的重复数据。比如一棵树有1万个节点,当将这棵树的全部资源授权给一个角色的时候,需要将这1万个节点再存储一遍,极大的浪费了资源。

2、采用权限编码的方式,比如给每一类角色一个编码,当一个资源包含在一个角色中时,就给该资源打一个角色编码的标签,当前端应用请求对应的权限时,根据资源的标签获取对应的资源,这种方式首先对于层级结构权限实现不友好,当一个资源的下属资源发生变更时不能自动感知。

发明内容

为了解决以上技术问题,本发明提供了一种具有层级结构的权限数据存取的方法。

本发明的技术方案是:

一种具有层级结构的权限数据存取的方法,

采用最小权限树保存和查询、最后一级数据绝对互补存储,进行层级结构的权限数据保存和查询;用最少的数据存储量实现海量层级权限数据的存储和查询及权限数据变更的动态感知。

进一步的,

所述的最小权限树保存,即当一个节点的下属所有子元素节点全部被选中,只保存这个节点;当一个节点及下属所有节点都没有被选中,跳过这个节点;当一个节点的下属所有节点中有任何一个节点没有选中,需要逐层保存,直到最后一级数据节点使用互补存储。

再进一步的,

如果一个节点在资源权限表中没有下级元素,去原始资源表查询;

如果一个节点在资源权限表中有下级元素,需要递归查询,直到查询到的节点在资源权限表中没有有下级元素为止。

在递归查询过程中,遇到inclusion=0的节点需要和资源权限表结合取该节点父节点的绝对补集。

从权限数据集中一次性可以获取到的权限树称为最小权限树,最小权限树应用在查询权限数据的场景。

当使用层级结构比如树型结构展示数据的时候,首先获取最小权限树,在树上节点逐层展开的时候,以当前节点为父节点,去资源授权表中查询其下属节点,查询出的下属节点分inclusion=0和inclusion=1两种,inclusion=1的直接返回,inclusion=0的,结合资源层级关系表取补集返回。

进一步的,

所述最后一级数据绝对互补存储,即层级权限数据的最后一级数据存储时,根据授权数据和未授权数据数量的多少,存储数据量少的子集,并使用标识字段表明存储的一个节点子集中授权的数据还是未授权的数据。

再进一步的,

S是一个集合,A是S的一个子集,由S中所有不属于A的元素组成的集合B,叫做子集A在S中的绝对补集;

节点N是资源树上的一个节点,集合S表示节点N下的所有资源,A表示S中有权限的资源,B表示S中不授权给用户的资源;

当A==S时,存储N节点本身;

当S>A>=B时,存储N节点和集合A,N节点和A中元素节点的inclusion=1;

当A

再进一步的,

权限数据变更规则

当A==S时,节点N是授权给用户的节点,当节点N下新增或者减少子元素的时候,权限数据存储内容无需有任何变更,新增子元素节点自动被授权,删除的子元素节点自动取消授权;当用户查询层级权限的时候,展开节点N的时候,新增或减少的节点元素自动生效;

当S>A>=B时,当节点N下新增或者减少子元素的时候,新增的子元素默认不被授权,删除的子元素如果属于集合A需要联动删除关联权限,如果属于集合B无需操作;

当A

本发明的有益效果是

(1)减少授权数据存储空间

(2)加快授权数据查询速度

(3)当授权数据下级数据发生变更时,不需要变更存储数据或只需要变更较少的数据。

附图说明

图1为从全部资源中选择的要授权给权限主体的资源示意图;

图2为去掉所有未任何选中元素节点后的资源示意图;

图3为去掉所有节点均选中后的资源示意图;

图4为从资源授权表查询出的最小权限树。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种具有层级结构的权限数据存取的方法,以最小权限树与绝对互补策略为基础,用最少的数据存储量实现海量层级权限数据的存储和查询及权限数据变更的动态感知。

存储结构:

资源层级关系表,存放资源原始的层级关系

资源授权表,存放权限或角色被授权的资源

存储原则:

当一个节点的下属所有子元素节点全部被选中,保存这个节点;

当一个节点及下属所有节点都没有被选中,跳过这个节点;

当一个节点的下属所有节点中有任何一个节点没有选中,需要递归保存,直到叶子节点使用互补策略。

查询原则:

如果一个节点在资源权限表中没有下级元素,去原始资源表查询;

如果一个节点在资源权限表中有下级元素,需要递归查询,直到查询到的节点在资源权限表中没有有下级元素为止。在递归查询过程中,遇到inclusion=0的节点需要和资源权限表结合取该节点父节点的绝对补集。

详细设计方案:

(1)最小权限树数据存储和查询方法

从权限数据集中一次性可以获取到的权限树称为最小权限树,最小权限树应用在查询权限数据的场景。当使用层级结构比如树型结构展示数据的时候,首先获取最小权限树,在树上节点逐层展开的时候,以当前节点为父节点,去资源授权表中查询其下属节点,查询出的下属节点分inclusion=0和inclusion=1两种,inclusion=1的直接返回,inclusion=0的,结合资源层级关系表取补集返回。

(2)最后一级数据绝对互补存储方法

S是一个集合,A是S的一个子集,由S中所有不属于A的元素组成的集合B,叫做子集A在S中的绝对补集。

节点N是资源树上的一个节点,集合S表示节点N下的所有资源,A表示S中有权限的资源,B表示S中不授权给用户的资源。

当A==S时,存储N节点本身;

当S>A>=B时,存储N节点和集合A,N节点和A中元素节点的inclusion=1;

当A

(3)权限数据变更规则

当A==S时,节点N是授权给用户的节点,当节点N下新增或者减少子元素的时候,权限数据存储内容无需有任何变更,新增子元素节点自动被授权,删除的子元素节点自动取消授权。当用户查询层级权限的时候,展开节点N的时候,新增或减少的节点元素自动生效。

当S>A>=B时,当节点N下新增或者减少子元素的时候,新增的子元素默认不被授权,删除的子元素如果属于集合A需要联动删除关联权限,如果属于集合B无需操作。

当A

设计示例:

图1为从全部资源中选择的要授权给权限主体的资源。

图2为去掉所有未任何选中元素节点后的资源,去掉资源后,下方表1中存储序号为1,2两行数据。

图3为去掉所有节点均选中后的资源,使用绝对互补策略存储节点A下资源和C下资源。

表1

表1就是资源授权表,可以看到使用该表完成了上述权限数据的存储,相比于其他的存储方式减少了数倍的存储空间。

图4为从资源授权表查询出的最小权限树,可以以此树为基础,从资源层级关系表检索其余数据资源。

以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

相关技术
  • 一种纳米层级结构的高岭石微球的制备方法
  • 一种层级组织结构账号权限分配方法及其系统与存储介质
  • 一种具有仿生层级结构界面层的碳纤维、制备方法以及复合材料制备方法
技术分类

06120115708058