CN118133316A - 一种权限处理方法、装置、设备及可读存储介质 - Google Patents

一种权限处理方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN118133316A
CN118133316A CN202410382966.XA CN202410382966A CN118133316A CN 118133316 A CN118133316 A CN 118133316A CN 202410382966 A CN202410382966 A CN 202410382966A CN 118133316 A CN118133316 A CN 118133316A
Authority
CN
China
Prior art keywords
rights
authority
target
tree
identification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410382966.XA
Other languages
English (en)
Inventor
刘宝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202410382966.XA priority Critical patent/CN118133316A/zh
Publication of CN118133316A publication Critical patent/CN118133316A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

本申请在计算机应用技术领域公开了一种权限处理方法、装置、设备及可读存储介质,该方法包括:接收目标角色的权限设置请求;在可视化界面输出菜单结构对应的权限标识树;基于可选权限的选中状态,确定已选权限;利用权限依赖关系,对已选权限进行纠正处理;将纠正处理后的已选权限赋予目标角色。技术效果:权限标识树可以展示组织结构和业务情况,便于选择权限。又可以根据权限依赖关系对已选权限进行纠正,可以保障最终的目标角色被赋予的权限都可有效。即,本申请降低了RBAC实现过程中,对角色权限管理的难度,提升了RBAC的易用性。

Description

一种权限处理方法、装置、设备及可读存储介质
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种权限处理方法、装置、设备及可读存储介质。
背景技术
RBAC(Role-Based Access Control)是一种基于角色的访问控制模型,它将用户、角色和权限三者分开管理,从而简化了权限分配和管理的过程。
目前,实现RBAC包括:管理员根据组织结构和业务需求,定义系统中的角色和权限,并将它们关联起来。管理员根据用户的身份和职责,将用户分配到相应的角色。用户登录系统后,根据其所属的角色,获得相应的权限。用户根据其拥有的权限,访问系统中的资源。
虽然目前通过RBAC虽然实现了用户、角色和权限三者分开管理,但仍然要求权限分配与管理的人员,要了解组织结构和业务需求。即,RBAC在实际应用中,仍然存在使用难度高的问题
综上所述,如何有效地解决RBAC的使用难度高等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种权限处理方法、装置、设备及可读存储介质,能够降低RBAC的使用难度。
为解决上述技术问题,本申请提供如下技术方案:
一种权限处理方法,包括:
接收目标角色的权限设置请求;
在可视化界面输出菜单结构对应的权限标识树;其中,所述权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;
基于所述可选权限的选中状态,确定已选权限;
利用权限依赖关系,对所述已选权限进行纠正处理;
将纠正处理后的已选权限赋予所述目标角色。
优选地,所述利用权限依赖关系,对所述已选权限进行纠正处理,包括:
利用所述权限依赖关系,判断所述已选权限对应的依赖权限是否已选;
如果否,则在所述已选权限中增加所述依赖权限;
如果是,则确定完成纠正处理。
优选地,将纠正处理后的已选权限赋予所述目标角色,包括:
判断纠正处理后的已选权限是否涉及与或非逻辑权限控制对应的隐藏权限;
如果是,则将所述隐藏权限添加至已选权限中,并将当前的已选权限赋予所述目标角色;所述权限标识树中无所述隐藏权限;
如果否,则将当前的已选权限赋予所述目标角色。
优选地,在将纠正处理后的已选权限赋予所述目标角色之后,还包括:
将所述目标角色赋予目标用户;
在所述目标用户登录后,基于所述目标角色确定所述目标用户的权限控制树;其中,所述权限控制树中,所述目标角色对应的已选权限按照模块、子模块和操作逐层递进排列;
按照所述权限控制树对所述目标用户进行权限限制控制。
优选地,按照所述权限控制树对所述目标用户进行权限限制控制,包括:
将所述权限控制树放入哈希结构的图谱变量;
基于所述图谱变量确定被授权的页面元素;所述页面元素包括菜单、子菜单、页签和操作;
基于授权的页面元素,输出所述目标角色授权访问的目标页面,并根据所述目标角色的权限控制所述目标页面路由,未授权的链接跳转到启动页;
在所述目标页面的模块发起接口访问的情况下,利用会话拦截器,拦截控制层的接口访问请求;
获取所述接口访问请求对应业务接口的注解,所述注解的参数为当前接口定义的权限标识;
解析所述注解,得到所述业务接口的权限标识;
判断所述权限标识是否在所述权限控制树中;
如果是,则允许访问所述业务接口;
如果否,则对所述业务接口进行拦截,并返回无权访问的提示信息。
优选地,按照所述权限控制树对所述目标用户进行权限限制控制,包括:
将所述权限控制树压缩为权限数组;
将所述权限数组记录到浏览器会话中和后台并发安全数组中;
利用浏览器会话中和后台并发安全数组中的权限数组判断所述目标用户是否存在当前模块或当前操作的权限标识;
如果是,则允许所述目标用户访问当前模块或允许所述目标用户执行当前操作;
如果否,则禁止所述目标用户访问当前模块或禁止所述目标用户执行当前操作。
优选地,还包括:
在新增业务模块的情况下,获取所述新增业务模块的子模块对应权限标识和操作对应权限标识;
按照模块、子模块和操作的层级关系,将所述新增业务模块对应的权限标识添加至所述权限标识树中。
一种权限处理装置,包括:
请求接收单元,用于接收目标角色的权限设置请求;
标识树输出单元,用于在可视化界面输出菜单结构对应的权限标识树;其中,所述权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;
权限确定单元,用于基于所述可选权限的选中状态,确定已选权限;
权限纠正单元,用于利用权限依赖关系,对所述已选权限进行纠正处理;
权限赋予单元,用于将纠正处理后的已选权限赋予所述目标角色。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述权限处理方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述权限处理方法的步骤。
应用本申请实施例所提供的方法,接收目标角色的权限设置请求;在可视化界面输出菜单结构对应的权限标识树;其中,权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;基于可选权限的选中状态,确定已选权限;利用权限依赖关系,对已选权限进行纠正处理;将纠正处理后的已选权限赋予目标角色。
为了提高RBAC的易用性,在接收到目标角色的权限设置请求的情况下,直接在可视化化界面输出与菜单结构对应,且可选权限按照模块、子模块和操作逐层递进方式排序的权限标识树。由于该权限标识树与菜单结构对应,且可选权限与对应的模块、子模块和操作进行了逐层递交方式排序,可从该权限标识树中展示出组织结构以及实际的业务情况,便于选中所需权限。权限之间的依赖关系往往很难被掌握,且又容易忽略,因此为了保障权限有效性,在确定了已选权限之后,再根据权限依赖关系对已选权限进行纠正处理。最终,将纠正处理后的已选权限赋予目标角色。
技术效果:通过输出与菜单结构对应的,且可选权限按照模块、子模块和操作逐层递进方式排序的权限标识树,可以展示组织结构和业务情况,便于选择权限。又可以根据权限依赖关系对已选权限进行纠正,可以保障最终的目标角色被赋予的权限都可有效。即,本申请降低了RBAC实现过程中,对角色权限管理的难度,提升了RBAC的易用性。
相应地,本申请实施例还提供了与上述权限处理方法相对应的权限处理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种权限处理方法的实施流程图;
图2为本申请实施例中一种权限标识树形结构示意图;
图3为本申请实施例中一种与web界面对应的权限标识树示意图;
图4为本申请实施例中一种用户权限管理和权限控制的架构图;
图5为本申请实施例中一种登入后角色权限控制的流程图;
图6为本申请实施例中一种后端权限控制的流程图;
图7为本申请实施例中一种新增用户管理模块的权限标识示意图;
图8为本申请实施例中一种权限处理装置的结构示意图;
图9为本申请实施例中一种电子设备的结构示意图;
图10为本申请实施例中一种电子设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例中一种权限处理方法的流程图,该方法包括以下步骤:
S101、接收目标角色的权限设置请求。
用户(User):指系统中的实体,可以是人员、设备、程序等,需要访问系统中的资源。
角色(Role):指系统中的一组权限的集合,代表了一定的职责或功能。一个用户可以拥有一个或多个角色,一个角色可以被分配给一个或多个用户。
权限(Permission):指对系统中的资源执行某种操作的能力。一个角色可以拥有一个或多个权限,一个权限可以被分配给一个或多个角色。
在本实施例中,目标角色可以为任意一种角色,如管理员、普通用户。
该目标角色也可以是首次创建时,发起权限设置请求,也可以为进行权限管理需要对目标角色的权限进行调整(如增加权限、删减权限、或替换权限)的情况下,发起的。
在实际应用中,可以设置一个角色管理页面,当该角色管理页面被打开后,即可视为接收到目标角色的权限设置请求。
S102、在可视化界面输出菜单结构对应的权限标识树。
其中,权限标识树中的可选权限按照模块、子模块和操作逐层递进排列。
其中,菜单结构即菜单栏,由于菜单结构本身即为树形结构,因此在本实施例中,可以将权限标识树设置为与菜单结构高度一致。
在该权限标识树中具有可选权限,该可选权限可以被全选,也可以被部分选择。该权限标识树中的可选标识可以标注上对应的权限名,以及选择框(该选择框可对应设置与权限名前或后,也可以将权限名对应范畴作为选择框)
这些可选权限在权限标识树中以模块、子模块和操作的层级关系进行递交式样的排列。
可预先定义权限标识,数据结构按照模块、子模块和操作层次递进。在新增或修改角色时,加入相应的权限标识,即具备该模块、子模块和操作的访问权限和操作权限。
权限标识的结构如图2所示。权限标识的递进关系和权限码实例,健康(模块)下划分为告警和硬盘预测两个子模块,告警子模块下划分为显示和恢复两个操作。子模块下可以包含多级,如硬盘预测子模块下包含SSD预测、HDD预测和硬盘定位等子模块。权限码保持唯一,以便后续在权限控制中用于权限判定。
请参考图3,图3所示的权限标识树对应web界面中角色权限树,该权限标识树与菜单结构保持高度一致,使用户便于理解组织结构和业务情况。
S103、基于可选权限的选中状态,确定已选权限。
用户(如管理员、或其他具备管理权限的用户)可以在可视化界面中的权限标识树内为目标角色选择权限。
当可选权限对应的选择框被勾选或被标注,即表明该选择被选中。
通过获取各个可选选项的选中状态,即可明确当前已选权限有哪些。在实际应用中,可以用一个列表来表示已选权限,如已选列表。
S104、利用权限依赖关系,对已选权限进行纠正处理。
虽然,设置了权限标识树,可以快速帮助用户选择相应的权限,但在实际操作时,权限之间还会存在依赖关系。例如,在存储管理全局中,往往存在模块依赖与另外几个模块的场景,如存储快照、三副本需要依赖与存储模块,拓扑链路分析需要依赖于存储、主机和交换机。为了保障所选的权限有效且可靠,还需要对已选权限进行纠正。
具体的,即已选权限1需要对应依赖权限2,而权限2不在已选权限中,则需要将权限2加入已选权限中,从而保障已选权限1有效。
在本申请的一种具体实施例中,利用权限依赖关系,对已选权限进行纠正处理,包括:
利用权限依赖关系,判断已选权限对应的依赖权限是否已选;
如果否,则在已选权限中增加依赖权限;
如果是,则确定完成纠正处理。
为便于描述,下面将上述步骤结合起来进行说明。
其中,依赖权限也是一种权限,为了便于区别于其他与当前已选权限没有关系的权限,在本实施例中,将其称之为依赖权限,该依赖权限具体是什么权限,需要以及当前选中权限以及权限依赖关系来确定。
根据权限标识的权限依赖关系进行权限自动纠正,在存储管理软件中,往往存在模块依赖与另外几个模块的场景,如存储快照、三副本需要依赖于存储模块,拓扑链路分析需要依赖于存储、主机与交换机,当用于在设置角色权限时,需要将其依赖的其他模块的权限同时加入到已选列表。
具体的,可以增加依赖关系表(dependent_list),用于标识树状结构的依赖关系。该结构为一对多的关系,权限标识依赖于多个其他的权限标识。数据结构为一个数组。自动校正逻辑为:选中一个权限标识,判断该权限标识是否依赖其他标识,如果是,进一步判断该其他标识是否为已选权限中,如果已在已选权限中,则略过;如果不在已选权限中,则将该其他标识加入已选权限中。即,将当前已选的权限所依赖的权限也其加入到已选列表。该操作需要递归进行。
需要注意的是,进行纠正处理可呈现出包括但不限于以下情况:
当已选权限不涉及权限依赖,则纠正后,已选权限不变化;
当已选权限涉及权限依赖,但所依赖的权限均已在已选权限中,则纠正后,已选权限不变化;
当已选权限涉及权限依赖,且所依赖的权限未被选中,则纠正后,已选权限发生变化,即增加了当前具有权限依赖关系的依赖权限。
在本申请中的一种具体实施方式中,利用权限依赖关系,对已选权限进行纠正处理,包括:
判断已选权限中的权限是否为依赖关系表中的子权限;
如果否,则判断下一个权限,直到已选权限中的权限均不缺乏对应的父权限;
如果是,则确定当前的已选权限中是否存在该子权限对应的父权限;
若存在,则判断下一个权限,直到已选权限中的权限均不缺乏对应的父权限;
若不存在,则将该子权限对应的父权限添加至已选权限中。
已选权限可以采用已选列表的方式进行呈现,通过查找已选权限中是否存在依赖关系表中的子权限,以及父权限的添加确认,可以有效保障最终的已选权限都有效。
在依赖关系表中,可以标明有依赖关系的权限之间的父子关系,其中,子权限的实施必须依赖于父权限。即,定义父子依赖关系,模块间存在强依赖关系时对权限标识树进行自动校正。
S105、将纠正处理后的已选权限赋予目标角色。
在完成纠正处理之后,便可把当前的已选权限赋予目标角色。
如此,便完成了对目标角色进行权限赋予,后续可将目标角色根据需求赋予相应的用户,从而实现将目标角色对应的已选权限赋予相应用户。
在本申请中的一种实施例中,将纠正处理后的已选权限赋予目标角色,包括:
判断纠正处理后的已选权限是否涉及与或非逻辑权限控制对应的隐藏权限;
如果是,则将隐藏权限添加至已选权限中,并将当前的已选权限赋予目标角色;权限标识树中无隐藏权限;
如果否,则将当前的已选权限赋予目标角色。
为便于描述,下面将上述步骤结合起来进行说明。
由于在本实施例中,是基于权限标识树来提供权限的选择,而该权限标识树是与菜单结构保持高度一致的,权限之间的与或非逻辑难以从权限标识树中体现出。而实际应用中,需要支持与或非逻辑的权限控制。
例如,在存储管理软件中,往往存在模块被多个模块使用的场景,如报表导出接口,在存储、交换机、主机等模块都会被用到。当角色权限具有存储、交换机或主机的模块的权限时即需要具有报表导出的权限。
在权限标识树中,该报表导出权限很难体现出其与存储、交换机、主机等模块逻辑关系,该报表导出权限也无法与菜单结构对应,因而,该报表导出权限在实际应用中,可能未被显示在权限标识树中,或即便被显示在权限标识树中,也无法达到体现用户在选择了存储、交换机或主机对应权限后,需要选择报表导出权限。
因此,在本实施例中,将此类与其他权限具有与或非逻辑的权限称之为隐藏权限。当纠正后的已选权限中涉及与或非逻辑对应的隐藏权限,则将该因此权限加入到已选权限中。
相应地,判断接口的访问权限的原理为:在Controller层接口上定义@RequirePermissions注解,注解中传入权限标识。会话拦截器中获取到接口的权限标识,判断权限标识是否在角色控制允许的列表中。
@RequirePermissions注解支持传入一个或多个权限标识。以下例子表示角色具有用户添加或更新权限,即有权限访问接口。Logic支持OR、AND,NOT三种逻辑操作。具体实现代码如下:
@RequirePermissions(permission={"system:user:add",
"system:user:update"},logic=OR)
public AjaxResult save(...)
{return AjaxResult.success(...);
}。
在本申请中的一种实施例中,在将纠正处理后的已选权限赋予目标角色之后,还包括:
将目标角色赋予目标用户;
在目标用户登录后,基于目标角色确定目标用户的权限控制树;其中,权限控制树中,目标角色对应的已选权限按照模块、子模块和操作逐层递进排列;
按照权限控制树对目标用户进行权限限制控制。
为便于描述,下面将上述步骤结合起来进行详细说明。
对于RBAC而言,其核心思想是,不是直接给用户分配权限,而是给用户分配角色,然后给角色分配权限,这样就可以实现多对多的关系,即一个用户可以拥有多个角色,一个角色可以拥有多个权限。
也就是说,当给目标角色赋予了已选权限之后,便可根据实际应用需求,将目标角色赋予目标用户。该目标用户可以为需要被赋予目标角色的用户,该目标用户可以同时赋予多个不同的角色,在本实施例中,为了便于描述,仅说明其被赋予了目标角色的情况下的权限限制控制。
具体的,在目标用户登录后,可基于目标角色确定目标用户的权限控制树;其中,权限控制树中,目标角色对应的已选权限按照模块、子模块和操作逐层递进排列;
然后按照权限控制树对目标用户进行权限限制控制。也就是说,通过权限控制树,实现对该目标用户的访问进行控制,使之只能在授权范围内进行操作,而未被授权的范围,则禁止其访问。
其中,按照权限控制树对目标用户进行权限限制控制,包括:
将权限控制树放入哈希结构的图谱变量;
基于图谱变量确定被授权的页面元素;页面元素包括菜单、子菜单、页签和操作;
基于授权的页面元素,输出目标角色授权访问的目标页面,并根据目标角色的权限控制目标页面路由,未授权的链接跳转到启动页;
在目标页面的模块发起接口访问的情况下,利用会话拦截器,拦截控制层的接口访问请求;
获取接口访问请求对应业务接口的注解,注解的参数为当前接口定义的权限标识;
解析注解,得到业务接口的权限标识;
判断权限标识是否在权限控制树中;
如果是,则允许访问业务接口;
如果否,则对业务接口进行拦截,并返回无权访问的提示信息。
为便于描述,下面将上述步骤结合起来进行说明。
请参考图4,在图4中给出了用户角色管理和权限控制的架构图。即,在前端页面中,页面访问控制是根据角色权限去控制可以访问的内容,依次控制菜单、子菜单、页签和操作4级页面元素。根据角色权限控制页面路由,未授权的链接跳转到启动页。用户和角色管理页面是提供用户和角色的查看、新增、修改和删除的配置页面。
权限管理模块中记录角色的权限标识数据,为前端页面访问控制的权限查询和用户角色管理页面的配置完成逻辑处理,提供接口。数据保存在mysql的用户和角色的数据表中。
前端各个模块通过调用RESTFul接口访问后台查询数据时,后台处理接口调用时,须经过权限控制模块,调用业务模块的方法。
JAVA后台的实现原理是在Controller层的接口上设置注解,注解的参数为当前接口定义的权限标识,在Spring框架中定义会话拦截器,获取该接口的权限标识是否在会话角色的权限列表中。若有权访问,继续访问业务接口。若无权访问,则对接口进行拦截,返回401无权访问。
在实际应用中,可分解为若干个子系统(子模块),包括:
1、角色管理:支持预置角色和用户自定义角色,自定义角色时,加入相应的权限标识,即具备该模块、子模块和操作的访问权限和操作权限。
2、用户管理:支持用户加入预置角色和自定义角色,加入角色后,具备角色定义的对业务模块和业务操作的权限。
3、前端权限控制:前端页面中根据角色权限控制菜单、子菜单、页签和操作等元素在页面上是否显示。
在前端页面中根据角色权限控制页面路由,未授权的链接跳转到启动页。
请参考图5,该图即登入后角色权限控制的流程图,当输入正确的用户名、密码登录时,InView前端调用登录接口,InView后端返回登录结果,包含角色权限详情,前端将角色权限列表存放到Hash(哈希)结构的Map(图谱)变量后,页面元素显示时会判断是否被授权,最终会展示当前角色授权访问的页面。
其中,页面元素显示判断是否被授权的原理:定义前端方法组件,调用该方法时传入权限标识,该方法中判断权限标识是否在角色权限列表Map中存在,若存在则显示该元素。权限标识须在页面元素上定义
未授权的功能模块在菜单上不显示,但当在浏览器地址栏中直接输入URL(Universal Resource Locator,统一资源定位符(也称网页地址)访问时,则会跳转到启动页。其原理为:页面加载时,前端控制器会经过路由控制,路由控制方法中判断要路由到的地址是否有权限。权限标识需要在页面路由上定义。
4、后台权限控制:后台对RESTFul接口进行角色权限控制。当接口无权调用时,返回401当前用户无权访问。
请参考图6,该图对应后端权限控制的流程图,当InView前端、Postman或第三方软件向InView后端调用RESTFul接口时,后端接受到请求后,在会话拦截器中进行拦截。具体的,首先在数据库中查询角色控制表,判断当前角色是否有该接口的访问权限,有权限则继续访问业务接口,无权调用则返回401当前用户无权访问。
其中,判断接口的访问权限的原理为:在Controller层接口上定义@RequirePermissions注解,注解中传入权限标识。会话拦截器中获取到接口的权限标识,判断权限标识是否在角色控制允许的列表中。
在本申请中的一种实施例中,按照权限控制树对目标用户进行权限限制控制,包括:
将权限控制树压缩为权限数组;
将权限数组记录到浏览器会话中和后台并发安全数组中;
利用浏览器会话中和后台并发安全数组中的权限数组判断目标用户是否存在当前模块或当前操作的权限标识;
如果是,则允许目标用户访问当前模块或允许目标用户执行当前操作;
如果否,则禁止目标用户访问当前模块或禁止目标用户执行当前操作。
为便于描述,下面将上述步骤结合起来进行说明。
在进行权限控制时,通过压缩权限控制树为数组,将计算复杂度由o(logn)降为o(n)。权限标识树也可压缩为数组。
权限控制是判定当前用户是否有当前模块或操作的权限,即获取当前用户的权限控制树,判断数据中是否存在当前模块或操作的权限标识。
在权限控制环节将权限控制树压缩为权限数组,并记录到浏览器SessionStorage和后台并发安全数组中(内存),可大大提高了计算效率。
在本申请中的一种实施例中,还包括:
在新增业务模块的情况下,获取新增业务模块的子模块对应权限标识和操作对应权限标识;
按照模块、子模块和操作的层级关系,将新增业务模块对应的权限标识添加至权限标识树中。
为便于描述,下面将上述步骤结合起来进行说明。
用户和角色管理与其他业务模块相互独立,用户和角色管理不受其他业务模块的影响。
新增业务模块时,须在前端、Controller层及mysql数据表中维护权限标识后,才能受权限控制。
新增业务模块的主要流程,包括:
(1)、定义权限标识,将权限标识写入到权限标识表(sys_permission_identity),用户在页面中自定义角色时可以加入新增业务模块的权限标识。否则,用户自定义角色时无法加入新增业务模块的权限。如用户管理的权限标识,其对应的权限标识如图7所示。
(2)、新增业务模块时,后端controller接口层新增接口,需设置注解@RequirePermissions,注解中传入权限标识字符。如@RequirePermissions("system:user:add")。
(3)、新增业务模块时,前端需要在控制显示隐藏的页面元素上配置权限标识。页面元素包含菜单、子菜单、页签和操作。设置路由控制,在app-route.js文件中为路由设置权限标识。
在本申请中的一种实施例中,可以通过设置相应的列表,从而便于进行权限管理与存储。具体的,可设置权限标识表、角色表、角色权限表、用户表和依赖关系表。
其中,权限标识表中记录字段名、类型和权限描述。例如,该权限标识表(sys_permission_identity)可如表1所示。
表1,权限标识表
其中,角色表(sys_role)记录不同角色,如表2所示,该角色表可以包括字段名、类型和描述。
表2,角色表
字段名 类型 描述
role_id int 角色ID
role_name varchar 角色名称
status int 状态,正常;已禁用
create_by varchar 创建用户
create_time datetime 创建时间
update_time datetime 更新时间
角色权限表(sys_role_permission),如表3所示,其内包括字段名、类型和描述。
表3,角色权限表
字段名 类型 描述
permission_id int 权限标识ID
role_id int 角色ID
依赖关系表(dependent_list),如表4所示,在该依赖关系表中包括字段名、类型和描述。
表4,依赖关系表
字段名 类型 描述
permission_id int 权限标识ID
dependent int 依赖标识ID
在实际应用中,还可设置用户表(user_info),该用户表在原用户名中增加role_id字段即可。
以资产为例,对数据库内容给出实例,即权限标识表可以具体如表5所示。
表5,资产中的权限标识表
其中:permission_name是角色添加时,页面中权限设置显示的内容。在实际应用需要做中英文国际化,上述只是示意,实际内容对国际化字段对应的key,前端根据key完成国际化翻译。
应用本申请实施例所提供的方法,接收目标角色的权限设置请求;在可视化界面输出菜单结构对应的权限标识树;其中,权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;基于可选权限的选中状态,确定已选权限;利用权限依赖关系,对已选权限进行纠正处理;将纠正处理后的已选权限赋予目标角色。
为了提高RBAC的易用性,在接收到目标角色的权限设置请求的情况下,直接在可视化化界面输出与菜单结构对应,且可选权限按照模块、子模块和操作逐层递进方式排序的权限标识树。由于该权限标识树与菜单结构对应,且可选权限与对应的模块、子模块和操作进行了逐层递交方式排序,可从该权限标识树中展示出组织结构以及实际的业务情况,便于选中所需权限。权限之间的依赖关系往往很难被掌握,且又容易忽略,因此为了保障权限有效性,在确定了已选权限之后,再根据权限依赖关系对已选权限进行纠正处理。最终,将纠正处理后的已选权限赋予目标角色。
技术效果:通过输出与菜单结构对应的,且可选权限按照模块、子模块和操作逐层递进方式排序的权限标识树,可以展示组织结构和业务情况,便于选择权限。又可以根据权限依赖关系对已选权限进行纠正,可以保障最终的目标角色被赋予的权限都可有效。即,本申请降低了RBAC实现过程中,对角色权限管理的难度,提升了RBAC的易用性。
具体的,针对实际存储管理软件业务不易理解及业务间依赖关系多的问题,提出了改进的RBAC角色权限设计方案,本申请实施例所提供的权限处理方法,可,能够解决存储管理软件中常规RBAC权限的诸多问题,对于用户,采用的树状结构,层次性更强,易用性更好。对于开发人员来说,模块逻辑划分清理,无须关注逻辑,只需定义和维护好权限标识即可。即本申请提出了一个整的RBAC思想的权限设计方案,除了能够应用到存储管理软件业务中,还可应用于其他领域的RBAC思想的权限管理中。
相应于上面的方法实施例,本申请实施例还提供了一种权限处理装置,下文描述的权限处理装置与上文描述的权限处理方法可相互对应参照。
参见图8所示,该装置包括以下模块:
请求接收单元101,用于接收目标角色的权限设置请求;
标识树输出单元102,用于在可视化界面输出菜单结构对应的权限标识树;其中,权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;
权限确定单元103,用于基于可选权限的选中状态,确定已选权限;
权限纠正单元104,用于利用权限依赖关系,对已选权限进行纠正处理;
权限赋予单元105,用于将纠正处理后的已选权限赋予目标角色。
应用本申请实施例所提供的装置,接收目标角色的权限设置请求;在可视化界面输出菜单结构对应的权限标识树;其中,权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;基于可选权限的选中状态,确定已选权限;利用权限依赖关系,对已选权限进行纠正处理;将纠正处理后的已选权限赋予目标角色。
为了提高RBAC的易用性,在接收到目标角色的权限设置请求的情况下,直接在可视化化界面输出与菜单结构对应,且可选权限按照模块、子模块和操作逐层递进方式排序的权限标识树。由于该权限标识树与菜单结构对应,且可选权限与对应的模块、子模块和操作进行了逐层递交方式排序,可从该权限标识树中展示出组织结构以及实际的业务情况,便于选中所需权限。权限之间的依赖关系往往很难被掌握,且又容易忽略,因此为了保障权限有效性,在确定了已选权限之后,再根据权限依赖关系对已选权限进行纠正处理。最终,将纠正处理后的已选权限赋予目标角色。
技术效果:通过输出与菜单结构对应的,且可选权限按照模块、子模块和操作逐层递进方式排序的权限标识树,可以展示组织结构和业务情况,便于选择权限。又可以根据权限依赖关系对已选权限进行纠正,可以保障最终的目标角色被赋予的权限都可有效。即,本申请降低了RBAC实现过程中,对角色权限管理的难度,提升了RBAC的易用性。
在本申请的一种具体实施方式中,权限纠正单元104,具体用于利用权限依赖关系,判断已选权限对应的依赖权限是否已选;如果否,则在已选权限中增加依赖权限;如果是,则确定完成纠正处理。
在本申请的一种具体实施方式中,权限赋予单元105,具体用于判断纠正处理后的已选权限是否涉及与或非逻辑权限控制对应的隐藏权限;
如果是,则将隐藏权限添加至已选权限中,并将当前的已选权限赋予目标角色;权限标识树中无隐藏权限;
如果否,则将当前的已选权限赋予目标角色。
在本申请的一种具体实施方式中,还包括:
权限控制单元,用于在将纠正处理后的已选权限赋予目标角色之后,将目标角色赋予目标用户;
在目标用户登录后,基于目标角色确定目标用户的权限控制树;其中,权限控制树中,目标角色对应的已选权限按照模块、子模块和操作逐层递进排列;
按照权限控制树对目标用户进行权限限制控制。
在本申请的一种具体实施方式中,权限控制单元,具体用于将权限控制树放入哈希结构的图谱变量;
基于图谱变量确定被授权的页面元素;页面元素包括菜单、子菜单、页签和操作;
基于授权的页面元素,输出目标角色授权访问的目标页面,并根据目标角色的权限控制目标页面路由,未授权的链接跳转到启动页;
在目标页面的模块发起接口访问的情况下,利用会话拦截器,拦截控制层的接口访问请求;
获取接口访问请求对应业务接口的注解,注解的参数为当前接口定义的权限标识;
解析注解,得到业务接口的权限标识;
判断权限标识是否在权限控制树中;
如果是,则允许访问业务接口;
如果否,则对业务接口进行拦截,并返回无权访问的提示信息。
在本申请的一种具体实施方式中,权限控制单元,具体用于将权限控制树压缩为权限数组;
将权限数组记录到浏览器会话中和后台并发安全数组中;
利用浏览器会话中和后台并发安全数组中的权限数组判断目标用户是否存在当前模块或当前操作的权限标识;
如果是,则允许目标用户访问当前模块或允许目标用户执行当前操作;
如果否,则禁止目标用户访问当前模块或禁止目标用户执行当前操作。
在本申请的一种具体实施方式中,还包括:
业务新增处理单元,用于在新增业务模块的情况下,获取新增业务模块的子模块对应权限标识和操作对应权限标识;
按照模块、子模块和操作的层级关系,将新增业务模块对应的权限标识添加至权限标识树中。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种权限处理方法可相互对应参照。
参见图9所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的权限处理方法的步骤。
具体的,请参考图10,图10为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的权限处理方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种权限处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的权限处理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种权限处理方法,其特征在于,包括:
接收目标角色的权限设置请求;
在可视化界面输出菜单结构对应的权限标识树;其中,所述权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;
基于所述可选权限的选中状态,确定已选权限;
利用权限依赖关系,对所述已选权限进行纠正处理;
将纠正处理后的已选权限赋予所述目标角色。
2.根据权利要求1所述的方法,其特征在于,所述利用权限依赖关系,对所述已选权限进行纠正处理,包括:
利用所述权限依赖关系,判断所述已选权限对应的依赖权限是否已选;
如果否,则在所述已选权限中增加所述依赖权限;
如果是,则确定完成纠正处理。
3.根据权利要求1所述的方法,其特征在于,将纠正处理后的已选权限赋予所述目标角色,包括:
判断纠正处理后的已选权限是否涉及与或非逻辑权限控制对应的隐藏权限;
如果是,则将所述隐藏权限添加至已选权限中,并将当前的已选权限赋予所述目标角色;所述权限标识树中无所述隐藏权限;
如果否,则将当前的已选权限赋予所述目标角色。
4.根据权利要求1所述的方法,其特征在于,在将纠正处理后的已选权限赋予所述目标角色之后,还包括:
将所述目标角色赋予目标用户;
在所述目标用户登录后,基于所述目标角色确定所述目标用户的权限控制树;其中,所述权限控制树中,所述目标角色对应的已选权限按照模块、子模块和操作逐层递进排列;
按照所述权限控制树对所述目标用户进行权限限制控制。
5.根据权利要求4所述的方法,其特征在于,按照所述权限控制树对所述目标用户进行权限限制控制,包括:
将所述权限控制树放入哈希结构的图谱变量;
基于所述图谱变量确定被授权的页面元素;所述页面元素包括菜单、子菜单、页签和操作;
基于授权的页面元素,输出所述目标角色授权访问的目标页面,并根据所述目标角色的权限控制所述目标页面路由,未授权的链接跳转到启动页;
在所述目标页面的模块发起接口访问的情况下,利用会话拦截器,拦截控制层的接口访问请求;
获取所述接口访问请求对应业务接口的注解,所述注解的参数为当前接口定义的权限标识;
解析所述注解,得到所述业务接口的权限标识;
判断所述权限标识是否在所述权限控制树中;
如果是,则允许访问所述业务接口;
如果否,则对所述业务接口进行拦截,并返回无权访问的提示信息。
6.根据权利要求4所述的方法,其特征在于,按照所述权限控制树对所述目标用户进行权限限制控制,包括:
将所述权限控制树压缩为权限数组;
将所述权限数组记录到浏览器会话中和后台并发安全数组中;
利用浏览器会话中和后台并发安全数组中的权限数组判断所述目标用户是否存在当前模块或当前操作的权限标识;
如果是,则允许所述目标用户访问当前模块或允许所述目标用户执行当前操作;
如果否,则禁止所述目标用户访问当前模块或禁止所述目标用户执行当前操作。
7.根据权利要求1至6任一项所述的方法,其特征在于,还包括:
在新增业务模块的情况下,获取所述新增业务模块的子模块对应权限标识和操作对应权限标识;
按照模块、子模块和操作的层级关系,将所述新增业务模块对应的权限标识添加至所述权限标识树中。
8.一种权限处理装置,其特征在于,包括:
请求接收单元,用于接收目标角色的权限设置请求;
标识树输出单元,用于在可视化界面输出菜单结构对应的权限标识树;其中,所述权限标识树中的可选权限按照模块、子模块和操作逐层递进排列;
权限确定单元,用于基于所述可选权限的选中状态,确定已选权限;
权限纠正单元,用于利用权限依赖关系,对所述已选权限进行纠正处理;
权限赋予单元,用于将纠正处理后的已选权限赋予所述目标角色。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述权限处理方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述权限处理方法的步骤。
CN202410382966.XA 2024-03-29 2024-03-29 一种权限处理方法、装置、设备及可读存储介质 Pending CN118133316A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410382966.XA CN118133316A (zh) 2024-03-29 2024-03-29 一种权限处理方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410382966.XA CN118133316A (zh) 2024-03-29 2024-03-29 一种权限处理方法、装置、设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN118133316A true CN118133316A (zh) 2024-06-04

Family

ID=91233528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410382966.XA Pending CN118133316A (zh) 2024-03-29 2024-03-29 一种权限处理方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN118133316A (zh)

Similar Documents

Publication Publication Date Title
US9047462B2 (en) Computer account management system and realizing method thereof
CN111695156A (zh) 业务平台的访问方法、装置、设备及存储介质
US10339330B2 (en) Data aggregation system for enabling query operations on restricted data that originates from multiple independent multiple sources
CN112433712B (zh) 报表展示方法、装置、计算机设备和存储介质
US8725767B1 (en) Multi-dimensional object model for storage management
CN111427491A (zh) 一种系统后台菜单按钮的配置方法及装置
KR20060054280A (ko) 복합 문서를 전자적으로 관리하는 시스템 및 방법
EP3028399A1 (en) Systems and methodologies for managing document access permissions
CN111475803B (zh) 后台权限管理系统及管理方法
US20070022091A1 (en) Access based file system directory enumeration
CN113821777B (zh) 权限控制方法、装置、计算机设备和存储介质
CN108288001B (zh) 一种组织架构的构建方法及装置
US20080104250A1 (en) Identity migration system apparatus and method
CN109033857A (zh) 一种访问数据的方法、装置、设备及可读存储介质
CN112866212A (zh) 云计算资源的访问控制方法、装置、计算机设备和介质
CN111506611A (zh) 数据的查询方法、装置、设备及存储介质
CN113918149A (zh) 接口开发方法、装置、计算机设备和存储介质
CN113127906A (zh) 基于c/s架构的统一权限管理平台、方法及存储介质
CN116702213A (zh) 针对多级企业的业务系统数据权限管理方法、装置和设备
CN118133316A (zh) 一种权限处理方法、装置、设备及可读存储介质
CN113076086B (zh) 元数据管理系统和使用其对模型对象进行建模的方法
CN115756446A (zh) 权限数据处理方法、装置、设备及存储介质
US11385919B1 (en) Machine image launch system
CN114254371A (zh) 数据权限处理方法、装置及服务器
CN114329561A (zh) 一种数据权限的配置方法、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination