CN113779517A - 一种权限获取方法、装置、设备及存储介质 - Google Patents

一种权限获取方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113779517A
CN113779517A CN202010518018.6A CN202010518018A CN113779517A CN 113779517 A CN113779517 A CN 113779517A CN 202010518018 A CN202010518018 A CN 202010518018A CN 113779517 A CN113779517 A CN 113779517A
Authority
CN
China
Prior art keywords
role
authority
path information
permission
storage container
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
CN202010518018.6A
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202010518018.6A priority Critical patent/CN113779517A/zh
Publication of CN113779517A publication Critical patent/CN113779517A/zh
Pending legal-status Critical Current

Links

Images

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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种权限获取方法、装置、设备及存储介质。该方法包括:根据已获取的各角色的角色编码,分别得到与每个角色关联的权限;从权限中提取出路径信息,并将路径信息存储到预设存储容器中;将与路径信息关联的角色存储到预设存储容器中;在检测到获取权限的触发事件时,获取与触发事件对应的待获取权限以及权限获取对象的对象角色;从预设存储容器中获取与待获取权限关联的权限角色,权限角色是具有待获取权限的角色;判断权限角色是否包括对象角色,并根据判断结果确定权限获取对象是否获取到待获取权限。本发明实施例的技术方案,解决了权限获取效率较为低下的问题,在保证权限获取精确度的同时,提高了权限的获取效率。

Description

一种权限获取方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机应用技术领域,尤其涉及一种权限获取方法、装置、设备及存储介质。
背景技术
现有的权限获取方案,多是先和数据库建立连接,再基于已建立连接在数据库中进行查询以获取相应的权限数据。
但是,上述方案因存在数据库连接建立时间以及查询时间上的开销,整个权限获取过程耗时较长,获取效率低下。
发明内容
本发明实施例提供了一种权限获取方法、装置、设备及存储介质,解决了权限获取效率较为低下的问题。
第一方面,本发明实施例提供了一种权限获取方法,可以包括:
在检测到获取权限的触发事件时,获取与触发事件对应的待获取权限以及权限获取对象的对象角色;
从预设存储容器中获取与待获取权限关联的权限角色,其中,权限角色是具有待获取权限的角色;
判断权限角色是否包括对象角色,并根据判断结果确定权限获取对象是否获取到待获取权限;
其中,预设存储容器通过如下步骤实现数据存储功能:
根据已获取的各角色的角色编码,分别得到与每个角色关联的权限;
从权限中提取出路径信息,并将路径信息存储到预设存储容器中,其中,路径信息是键信息;
将与路径信息关联的角色存储到预设存储容器中,其中,与路径信息关联的角色是值信息。
可选的,与路径信息关联的角色的数量是至少两个,相应的,将与路径信息关联的角色存储到预设存储容器中,可以包括:
从与路径信息关联的各角色中筛选出当前角色;
判断预设存储容器中是否存储有与路径信息关联的角色;
若否,则将当前角色存储于预设二级集合对象中,并将二级集合对象回填到预设存储容器中;
否则,获取已存储于预设存储容器中的与路径信息关联的角色所在的数据集合,将当前角色存储于数据集合中,并将已添加角色的数据集合回填到预设存储容器中。
可选的,将与路径信息关联的角色存储到预设存储容器中,可以包括:
基于预设注解生成存储函数,基于存储函数将与路径信息关联的角色存储到预设存储容器中。
可选的,权限包括权限信息和路径信息,从权限中提取出路径信息,包括:
基于预设转化函数将权限转化成流数据;
以拉姆达表达式为入参参数,对流数据进行遍历,并根据遍历结果从各权限中分别提取出路径信息。
可选的,根据已获取的各角色的角色编码,分别得到与每个角色关联的权限,可以包括:
从数据库中获取各角色,并将各角色存储于内存中,其中,角色包括角色编码,以及角色名称和/或角色描述信息;
根据各角色编码,从数据库分别得到与角色编码关联的权限。
可选的,根据已获取的各角色的角色编码,分别得到与每个角色关联的权限,可以包括:
判断预设存储容器是否为空,若是,则根据已获取的各角色的角色编码,分别得到与每个角色关联的权限。
可选的,预设存储容器包括Static类型的键值对,键值对中的键信息包括String类型的数据,和/或,值信息包括Collection类型的数据。
第二方面,本发明实施例还提供了一种权限获取装置,该装置可以包括:
对象角色获取模块,用于在检测到获取权限的触发事件时,获取与触发事件对应的待获取权限以及权限获取对象的对象角色;
权限角色获取模块,用于从预设存储容器中获取与待获取权限关联的权限角色,其中,权限角色是具有待获取权限的角色;
权限获取模块,用于判断权限角色是否包括对象角色,并根据判断结果确定权限获取对象是否获取到待获取权限;
其中,预设存储容器通过如下模块实现数据存储功能:
权限得到模块,用于根据已获取的各角色的角色编码,分别得到与每个角色关联的权限;
路径信息存储模块,用于从权限中提取出路径信息,并将路径信息存储到预设存储容器中,其中,路径信息是键信息;
角色存储模块,用于将与路径信息关联的角色存储到预设存储容器中,其中,与路径信息关联的角色是值信息。
第三方面,本发明实施例还提供了一种设备,该设备可以包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的权限获取方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的权限获取方法。
本发明实施例的技术方案,根据已获取的各角色的角色编码,分别得到与每个角色关联的权限,并将权限的路径信息和与其关联的全部角色以键值对方式存储于预设存储容器中;这样一来,在检测到获取权限的触发事件时,可以获取与触发事件对应的待获取权限以及权限获取对象的对象角色;从预设存储容器中获取与待获取权限关联的权限角色,并根据权限角色是否包括对象角色,确定权限获取对象是否能够获取到待获取权限。上述技术方案,在获取权限时,能够有效减少与数据库间的交互逻辑,从设置于内存中的预设存储容器中可以直接获取到权限,解决了权限获取效率较为低下的问题,在保证权限获取精确度的同时,能够极大地提高权限的获取效率。
附图说明
图1是本发明实施例一中的一种权限获取方法的流程图;
图2是本发明实施例二中的一种权限获取装置的结构框图;
图3是本发明实施例三中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在介绍本发明实施例之前,先对本发明实施例的应用场景进行示例性说明:每个对象具有多个角色,而每个角色具有多个权限,例如,假设某对象的对象角色既是程序开发部门的员工,也是市场推广部门的领导,那么,作为程序开发部门的员工,其对程序开发部门关联的***内容具有访问权限,而作为市场推广部门的领导,其对市场推广部门关联的***内容同时具有访问权限和修改权限。因此,***在接收到该对象发送的权限获取请求时,可以根据从权限获取请求中分解出的待获取权限和对象角色,确定其是否具有待获取权限。
实施例一
图1是本发明实施例一中提供的一种权限获取方法的流程图。本实施例可适用于从存储于内存的预设存储容器中获取权限的情况。该方法可以由本发明实施例提供的权限获取装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在各种用户终端或服务器上。
参见图1,本发明实施例的方法具体包括如下步骤:
S110、根据已获取的各角色的角色编码,分别得到与每个角色关联的权限。
其中,每个对象具有哪些角色,每个角色具有哪些权限,这些数据均已存储于数据库中。而且,为了唯一标识各个角色,可以将角色与角色编码相关联,由此,每个角色可以包括角色编码,该角色编码可以是字符串类型的数据,这是因为字符串类型的角色编码是一串英文字母,根据该英文字母可以直接获知该角色的具体信息,无需再次进行二级查询逻辑,由此提高了权限获取效率。
示例性的,若角色编码为Leader of marketing department,则根据该角色编码可以得知该角色是市场部门的领导。除此之外,每个角色还可以包括角色名称、角色描述信息等等,在此未做具体限定。
由此,在从数据库中获取到各个角色之后,可以根据各角色的角色编码,从数据库中得到与每个角色分别关联的权限,或是说与每个角色编码分别关联的权限,该权限通常是多个权限构成的集合,每个权限可以包括路径信息(url)和权限信息,这些从数据库中获取到的角色和权限可以存储于内存中。
S120、从权限中提取出路径信息,并将路径信息存储到预设存储容器中,其中,路径信息是键值对中的键信息。
其中,在获取到权限后,由于权限包括路径信息,由此可以从每个权限中提取出相应的路径信息,并将该路径信息存储到预设存储容器中,该路径信息是键值对中的键信息。本领域技术人员可以理解的是,角色、权限等等数据都是存储于数据库中的,为减少与数据库的交互次数,可以先将这些数据以变量形式存储于内存中,然后再将相应数据存储到预设存储容器中。
S130、将与路径信息关联的角色存储到预设存储容器中,其中,与路径信息关联的角色是键值对中的值信息。
其中,针对预设存储容器中的任一路径信息,可以将与其关联的各角色依次存储到预设存储容器中,并将其作为路径信息的值信息,也就是说,路径信息以及与其关联的角色以键值对方式存储于预设存储容器中。
示例性的,假设角色1具有权限1,角色2具有权限1和权限2,那么,与权限1关联的角色是角色1和角色2,与权限2关联的角色是角色2,由此,针对权限1的路径信息,可以对与其关联的各角色进行遍历,以便将角色1和角色2依次存储到预设存储容器中;相应的,针对权限2的路径信息,可以对与其关联的各角色进行遍历,以便将角色2依次存储到预设存储容器中。
在此基础上,可选的,若与路径信息关联的角色的数量是至少两个,则可以先从与路径信息关联的各角色中筛选出当前角色,同时判断预设存储容器中是否已存储有与路径信息关联的角色;若否,可以将当前角色存储于预设二级集合对象中,并将二级集合对象回填到预设存储容器中;若是,可以获取已存储于预设存储容器中的与路径信息关联的角色所在的数据集合,并将当前角色添加于数据集合中,将已添加角色的数据集合回填到预设存储容器中。
示例性的,继续以上述例子中的权限1为例,先将角色1作为当前角色,此时,预设存储容器中未存储有与路径信息关联的角色,那么,可以将角色1存储于预设二级集合对象中,并将二级集合对象回填到预设存储容器中;接下来,再将角色2作为当前角色,此时,预设存储容器中已存储有与路径信息关联的角色1,那么,可以先获取已存储于预设存储容器中的与路径信息关联的角色1所在的数据集合,并将角色2添加到该数据集合中,再将已添加角色2的数据集合回填到预设存储容器中。
S140、在检测到获取权限的触发事件时,获取与触发事件对应的待获取权限以及权限获取对象的对象角色。
其中,在预设存储容器中已经存储全部的路径信息,以及与每个路径信息分别关联的全部的角色之后,若检测到获取权限的触发事件,则可以获取到与该触发事件对应的待获取权限以及权限获取对象的对象角色,其中,触发事件可以是权限获取请求的接收事件、目标数据的访问事件、目标数据的修改事件等等,待获取权限是权限获取对象希望获取到的权限,对象角色是权限获取对象具有的各个角色,其数量可能是一个、两个或是多个。
S150、从预设存储容器中获取与待获取权限关联的权限角色,其中,权限角色是具有待获取权限的角色。
其中,预设存储容器中的路径信息和角色是以键值对方式进行存储,因此,根据待获取权限的路径信息,可以从预设存储容器中获取到与其关联的权限角色,该权限角色包括具有待获取权限的各个角色。
S160、判断权限角色是否包括对象角色,并根据判断结果确定权限获取对象是否获取到待获取权限。
其中,如果对象角色是权限角色中的至少一个,则权限获取对象能够获取到待获取权限。例如,对象角色是A、B和C,权限角色是A、B、E、F、G、H、I和G,由于二者具有共同的角色,即角色A和角色B,权限获取对象能够获取到待获取权限。相应的,如果对象角色不是权限角色中的任一个角色,则权限获取对象不能够获取到待获取权限。相较于常规的通过判断是否存在待获取权限的路径信息和对象角色间的映射关系,以确定权限获取对象是否能够获取到待获取权限,从实际应用角度而言,上述技术方案的判断效率更快。
本发明实施例的技术方案,根据已获取的各角色的角色编码,分别得到与每个角色关联的权限,并将权限的路径信息和与其关联的全部角色以键值对方式存储于预设存储容器中;这样一来,在检测到获取权限的触发事件时,可以获取与触发事件对应的待获取权限以及权限获取对象的对象角色;从预设存储容器中获取与待获取权限关联的权限角色,并根据权限角色是否包括对象角色,确定权限获取对象是否能够获取到待获取权限。上述技术方案,在获取权限时,能够有效减少与数据库间的交互逻辑,从设置于内存中的预设存储容器中可以直接获取到权限,解决了权限获取效率较为低下的问题,在保证权限获取精确度的同时,能够极大地提高权限的获取效率。
为了更好地理解上述步骤的具体实现过程,下面结合具体示例,对本实施例的权限获取方法进行示例性的说明。示例性的,考虑到一级结构的集合中通常只有一个数据,如果多个数据间存在关联性,这就需要设置多个集合以体现出集合间的关联性,但是,多个集合带来了数据空间上的较大浪费。为解决这一问题,将预设存储容器设置为二级结构,以便将多个集合中的数据存放在一个集合中,这样能够在更小的数据空间承载更多的数据。在此基础上,将预设存储容器中的键信息设置为String类型的数据,以便基于键信息表示某个路径信息(url)。考虑到每个url关联多个值信息,每个值信息即为一个角色,由此,可以将url对应的值信息设置为二级集合类型。为了实现该二级集合类型,预先设置角色的类DYRole,DYRole亦为角色容器,其具体含义如下所示:
Figure BDA0002530859470000091
Figure BDA0002530859470000101
具体的,类DYRole包括角色编码code、角色名称name和角色描述信息description,code是该角色的唯一标识符,其是String类型的数据,相较于无实质含义的数字类型的code如ID,String类型的code是一串英文字母,根据该英文字母可以直接获知该角色的具体信息,无需基于code再次进行二级查询逻辑,由此提高了权限获取效率。
考虑到基于get和set系列函数实现DYRole中角色的存储和获取时,可能会存在代码空余等问题。为解决这一问题,在DYRole中设置了预设注解以自动生成存储函数和获取函数,以便基于存储函数实现DYRole中角色的存储,且基于获取函数实现DYRole中角色的获取。示例性的,通过设置@Data注解可以自动生成其get和set系列函数,由此可以极大的简化数据存储操作函数的编写,提高了应用程序的开发效率。
在设置完成角色容器DYRole后,考虑到url作为一级集合类型,其对应的值信息是一个二级集合类型,由此可以将值信息设置为Collection类型的数据,如Collection<Authority>,其中的Authority是权限。本领域技术人员应当理解的是,相对于List类型,Collection类型可以解决数据重复、内存空间开销较大等问题,由此提高了权限获取效率和空间利用率。另外,考虑到预设存储容器中的数据是通用数据,其不会随着对象的不同而出现变化,由此,为保证数据的一致性,且可以通过类直接进行访问,将预设存储容器中的数据设置为静态(Static)类型,由此提高了数据获取的便捷性。
综上分析,预设存储容器可以设置为:
private static Map<String,Collection<DYRole>>resourceMap=null
需要说明的是,在获取权限时直接对数据库进行访问来实现数据加载的处理方式,存在访问数据库时需要和数据库发生多次交互,致使数据访问效率低下的问题。由此,为提高权限获取效率,可以仅在***启动时将全部数据加载至预设存储容器中,并在加载完成后不再进行二次加载,由此,后续在获取权限时,只需对存储于内存中的预设存储容器进行访问,无需再和数据库发生任何交互,权限获取效率得以明显提升。特别的,在实现数据加载前,可选的,可以先判定预设存储容器(resourceMap)是否为空(null),若为null则说明数据尚未加载,此时可以进行数据加载处理;若不为null则说明数据加载已完成,此时无需再进行数据加载处理。
为方便后续数据加载逻辑的复用,可以基于预设加载函数实现数据加载逻辑,示例性的,该预设加载函数为Private void loadResource(){},其返回值是void类型,函数名称是loadResource,具体实现逻辑如下所述:
先对resourceMap进行实例化操作,考虑到resourceMap中存储的是Static类型的数据,若基于HashMap对其进行实例化处理,容易出现线程安全方面的问题,一旦多线程访问时大概率会出现数据错乱的情况。为了解决这一问题,可以选择一个线程安全类来实例化resourceMap,比如resourceMap=new ConcurrentHashMap<>()。考虑到一个对象可能具有多个角色,一个角色可能具有多个权限,每个权限和一个url相关联。由此,数据加载逻辑就是将url以及与该url关联的全部角色以键值对方式存储到resourceMap中。
具体的,可以先从存储于数据库的角色表中通过调用UserService.findAllRole()函数获取到全部角色,该角色是如上文所述的DYRole,将其标记为List<DYRole>dyRoleList。接下来判定dyRoleList是否为空,一种判定方式是通过dyRoleList==null||dyRoleList.size()==0这种2步方式实现,判定效率相对低下;另一种判定方式通过调用dyRoleList.isEmpty()函数实现,若返回true表示为空,则直接抛出异常throwException(“未获取到角色”)以终止流程,若返回false表示非空,则执行后续流程。
对dyRoleList进行遍历操作,一种遍历方式是基于for循坏实现,但是,for循环存在内部数据读取的时间开销,效率较为低下;另一种遍历方式是基于forEach实现,其能够提高遍历效率,如dyRoleList.stream().forEach(item->{})。在执行forEach之前,可以先通过预设转化函数stream()将角色转化成流数据,因为只有流数据才能执行forEach函数;在forEach函数内部可以使用拉姆达表达式,如入参参数为item,item是一个DYRole对象,在->后面就是函数体内容,以便获取获该DYRole对象的全部权限的url。具体的,先通过调用item.code获取到DYRole对象中的code,再通过调用getAuthorityByDyRoleCode(String code)函数获取到code对应的全部权限List<Authority>authorityList,其中,Authority类是权限类,它主要描述了某个权限的权限信息和url,如下所示:
Figure BDA0002530859470000121
Figure BDA0002530859470000131
再接下来对authorityList进行遍历操作,具体操作流程与dyRoleList类似,先通过预设转化函数stream()函数将权限转化成流数据,且在forEach函数内部使用拉姆达表达式,如入参参数为item2,item2是Authority类型的数据,其是某个角色(item)下的某个权限,接下来通过调用item2.url()函数可以获取到获取其中的url,由此获取到了item下的itme2的url。
上述获取到的各种数据可以先存储在内存中,然后再将它们依次存储到resourceMap中。具体的,可以先基于resourceMap.contains(url)函数判定resourceMap中是否已经存储了url对应的值信息,如果resourceMap.contains(url)返回false,这说明resourceMap中未存储相应的值信息,此时可以对resourceMap中的二级集合类型Collection<DYRole>进行实例化操作,如Collection<DYRole>atts=new ArrayList<DYRole>(),由此可以得到一个二级集合对象atts,然后再通过调用atts.add(itme)函数将url下的角色存储到atts中,然后再通过调用resourceMap.put(url,atts)函数来将atts回填到resourceMap中以实现数据填充。相应的,如果resourceMap.contains(url)返回true,这说明resourceMap中已存储相应的值信息,此时可以通过调用Collection<DYRole>value=resourceMap.get(url)函数来获取已存储的数据集合并标记为value,value是已存储的值信息所在的数据集合,然后再通过调用value.add(item)函数将新的角色添加到value中,然后再通过调用resourceMap.put(url,value)函数将value回填到resourceMap中。当上述循环流程全部执行完毕后,resourceMap中存储了全部url以及各url关联的角色。
由此,在检测到获取权限的触发事件时,可以先获取与该触发事件对应的待获取权限的url以及权限获取对象的对象角色;然后通过调用Collection<DYRole>resultRoleList=resourceMap.get(url)从预设存储容器中获取与待获取权限关联的权限角色,并将该权限角色存储到resultRoleList对象中;再然后对resultRoleList进行遍历以判断resultRoleList中是否包含对象角色,若是,则说明权限获取对象能够获取到待获取权限,否则,这说明权限获取对象不能够获取到待获取权限。
实施例二
图2为本发明实施例二提供的权限获取装置的结构框图,该装置用于执行上述任意实施例所提供的权限获取方法。该装置与上述各实施例的权限获取方法属于同一个发明构思,在权限获取装置的实施例中未详尽描述的细节内容,可以参考上述权限获取方法的实施例。参见图2,该装置具体可包括:权限得到模块210、路径信息存储模块220、角色存储模块230、对象角色获取模块240、权限角色获取模块250和权限获取模块260。
其中,权限得到模块210,用于根据已获取的各角色的角色编码,分别得到与每个角色关联的权限;
路径信息存储模块220,用于从权限中提取出路径信息,并将路径信息存储到预设存储容器中,其中,路径信息是键信息;
角色存储模块230,用于将与路径信息关联的角色存储到预设存储容器中,其中,与路径信息关联的角色是值信息;
对象角色获取模块240,用于在检测到获取权限的触发事件时,获取与触发事件对应的待获取权限以及权限获取对象的对象角色;
权限角色获取模块250,用于从预设存储容器中获取与待获取权限关联的权限角色,其中,权限角色是具有待获取权限的角色;
权限获取模块260,用于判断权限角色是否包括对象角色,并根据判断结果确定权限获取对象是否获取到待获取权限。
可选的,角色存储模块230,具体可以包括:
角色筛选单元,用于与路径信息关联的角色的数量是至少两个,从与路径信息关联的各角色中筛选出当前角色;
判断单元,用于判断预设存储容器中是否存储有与路径信息关联的角色;
第一回填单元,用于若否,则将当前角色存储于预设二级集合对象中,并将二级集合对象回填到预设存储容器中;
第二回填单元,用于否则,获取已存储于预设存储容器中的与路径信息关联的角色所在的数据集合,将当前角色存储于数据集合中,并将已添加角色的数据集合回填到预设存储容器中。
可选的,角色存储模块230,具体可以包括:
角色存储单元,用于基于预设注解生成存储函数,基于存储函数将与路径信息关联的角色存储到预设存储容器中。
可选的,路径信息存储模块220,具体可以包括:
权限转化单元,用于权限包括权限信息和路径信息,基于预设转化函数将权限转化成流数据;
路径信息提取单元,用于以拉姆达表达式为入参参数,对流数据进行遍历,并根据遍历结果从各权限中分别提取出路径信息。
可选的,权限得到模块210,具体可以包括:
角色存储单元,用于从数据库中获取各角色,并将各角色存储于内存中,其中,角色包括角色编码,以及角色名称和/或角色描述信息;
第一权限得到单元,用于根据各角色编码,从数据库分别得到与角色编码关联的权限。
可选的,权限得到模块210,具体可以包括:
第二权限得到单元,用于判断预设存储容器是否为空,若是,则根据已获取的各角色的角色编码,分别得到与每个角色关联的权限。
可选的,预设存储容器包括Static类型的键值对,键值对中的键信息包括String类型的数据,和/或,值信息包括Collection类型的数据。
本发明实施例二提供的权限获取装置,通过权限得到模块、路径信息存储模块和角色存储模块相互配合,根据已获取的各角色的角色编码,分别得到与每个角色关联的权限,并将权限的路径信息和与其关联的全部角色以键值对方式存储于预设存储容器中;这样一来,对象角色获取模块在检测到获取权限的触发事件时,可以获取与触发事件对应的待获取权限以及权限获取对象的对象角色;权限角色获取模块和权限获取模块相互配合,从预设存储容器中获取与待获取权限关联的权限角色,并根据权限角色是否包括对象角色,确定权限获取对象是否能够获取到待获取权限。上述装置,在获取权限时,能够有效减少与数据库间的交互逻辑,从设置于内存中的预设存储容器中可以直接获取到权限,解决了权限获取效率较为低下的问题,在保证权限获取精确度的同时,能够极大地提高权限的获取效率。
本发明实施例所提供的权限获取装置可执行本发明任意实施例所提供的权限获取方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述权限获取装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例三
图3为本发明实施例三提供的一种设备的结构示意图,如图3所示,该设备包括存储器310、处理器320、输入装置330和输出装置340。设备中的处理器320的数量可以是一个或多个,图3中以一个处理器320为例;设备中的存储器310、处理器320、输入装置330和输出装置340可以通过总线或其它方式连接,图3中以通过总线350连接为例。
存储器310作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的权限获取方法对应的程序指令/模块(例如,权限获取装置中的权限得到模块210、路径信息存储模块220、角色存储模块230、对象角色获取模块240、权限角色获取模块250和权限获取模块260)。处理器320通过运行存储在存储器310中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的权限获取方法。
存储器310可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器310可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器310可进一步包括相对于处理器320远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置330可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置340可包括显示屏等显示设备。
实施例四
本发明实施例四提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种权限获取方法,该方法包括:
在检测到获取权限的触发事件时,获取与触发事件对应的待获取权限以及权限获取对象的对象角色;
从预设存储容器中获取与待获取权限关联的权限角色,其中,权限角色是具有待获取权限的角色;
判断权限角色是否包括对象角色,并根据判断结果确定权限获取对象是否获取到待获取权限;
其中,预设存储容器通过如下步骤实现数据存储功能:
根据已获取的各角色的角色编码,分别得到与每个角色关联的权限;
从权限中提取出路径信息,并将路径信息存储到预设存储容器中,其中,路径信息是键信息;
将与路径信息关联的角色存储到预设存储容器中,其中,与路径信息关联的角色是值信息。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的权限获取方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种权限获取方法,其特征在于,包括:
在检测到获取权限的触发事件时,获取与所述触发事件对应的待获取权限以及权限获取对象的对象角色;
从预设存储容器中获取与所述待获取权限关联的权限角色,其中,所述权限角色是具有所述待获取权限的角色;
判断所述权限角色是否包括所述对象角色,并根据判断结果确定所述权限获取对象是否获取到所述待获取权限;
其中,所述预设存储容器通过如下步骤实现数据存储功能:
根据已获取的各角色的角色编码,分别得到与每个所述角色关联的权限;
从所述权限中提取出路径信息,并将所述路径信息存储到所述预设存储容器中,其中,所述路径信息是键信息;
将与所述路径信息关联的所述角色存储到所述预设存储容器中,其中,与所述路径信息关联的所述角色是值信息。
2.根据权利要求1所述的方法,其特征在于,所述与所述路径信息关联的所述角色的数量是至少两个,所述将与所述路径信息关联的所述角色存储到所述预设存储容器中,包括:
从与所述路径信息关联的各所述角色中筛选出当前角色;
判断所述预设存储容器中是否存储有与所述路径信息关联的所述角色;
若否,则将所述当前角色存储于预设二级集合对象中,并将所述二级集合对象回填到所述预设存储容器中;
否则,获取已存储于所述预设存储容器中的与所述路径信息关联的所述角色所在的数据集合,将所述当前角色存储于所述数据集合中,并将已添加角色的所述数据集合回填到所述预设存储容器中。
3.根据权利要求1所述的方法,其特征在于,所述将与所述路径信息关联的所述角色存储到所述预设存储容器中,包括:
基于预设注解生成存储函数,基于所述存储函数将与所述路径信息关联的所述角色存储到所述预设存储容器中。
4.根据权利要求1所述的方法,其特征在于,所述权限包括权限信息和所述路径信息,所述从所述权限中提取出路径信息,包括:
基于预设转化函数将所述权限转化成流数据;
以拉姆达表达式为入参参数,对所述流数据进行遍历,并根据遍历结果从各所述权限中分别提取出路径信息。
5.根据权利要求1所述的方法,其特征在于,所述根据已获取的各角色的角色编码,分别得到与每个所述角色关联的权限,包括:
从数据库中获取各角色,并将各所述角色存储于内存中,其中,所述角色包括角色编码,以及角色名称和/或角色描述信息;
根据各所述角色编码,从所述数据库分别得到与所述角色编码关联的权限。
6.根据权利要求1所述的方法,其特征在于,所述根据已获取的各角色的角色编码,分别得到与每个所述角色关联的权限,包括:
判断所述预设存储容器是否为空,若是,则根据已获取的各角色的角色编码,分别得到与每个所述角色关联的权限。
7.根据权利要求1所述的方法,其特征在于,所述预设存储容器包括Static类型的键值对,所述键值对中的所述键信息包括String类型的数据,和/或,所述值信息包括Collection类型的数据。
8.一种权限获取装置,其特征在于,包括:
对象角色获取模块,用于在检测到获取权限的触发事件时,获取与所述触发事件对应的待获取权限以及权限获取对象的对象角色;
权限角色获取模块,用于从预设存储容器中获取与所述待获取权限关联的权限角色,其中,所述权限角色是具有所述待获取权限的角色;
权限获取模块,用于判断所述权限角色是否包括所述对象角色,并根据判断结果确定所述权限获取对象是否获取到所述待获取权限;
其中,所述预设存储容器通过如下模块实现数据存储功能:
权限得到模块,用于根据已获取的各角色的角色编码,分别得到与每个所述角色关联的权限;
路径信息存储模块,用于从所述权限中提取出路径信息,并将所述路径信息存储到所述预设存储容器中,其中,所述路径信息是键信息;
角色存储模块,用于将与所述路径信息关联的所述角色存储到所述预设存储容器中,其中,与所述路径信息关联的所述角色是值信息。
9.一种设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的权限获取方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的权限获取方法。
CN202010518018.6A 2020-06-09 2020-06-09 一种权限获取方法、装置、设备及存储介质 Pending CN113779517A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010518018.6A CN113779517A (zh) 2020-06-09 2020-06-09 一种权限获取方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010518018.6A CN113779517A (zh) 2020-06-09 2020-06-09 一种权限获取方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN113779517A true CN113779517A (zh) 2021-12-10

Family

ID=78834334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010518018.6A Pending CN113779517A (zh) 2020-06-09 2020-06-09 一种权限获取方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113779517A (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101441688A (zh) * 2007-11-20 2009-05-27 阿里巴巴集团控股有限公司 一种用户权限分配方法和一种用户权限控制方法
CN102882834A (zh) * 2011-07-13 2013-01-16 阿里巴巴集团控股有限公司 一种权限控制方法及装置
CN107111519A (zh) * 2014-11-11 2017-08-29 亚马逊技术股份有限公司 用于管理和调度容器的***
CN107545047A (zh) * 2017-08-17 2018-01-05 平安科技(深圳)有限公司 用户权限数据的查询方法及终端设备
CN108280365A (zh) * 2017-09-19 2018-07-13 平安科技(深圳)有限公司 数据访问权限管理方法、装置、终端设备及存储介质
CN110399747A (zh) * 2019-07-18 2019-11-01 佳都新太科技股份有限公司 一种用户权限关联方法、查询方法及装置
CN110503427A (zh) * 2018-05-16 2019-11-26 北京嘀嘀无限科技发展有限公司 支付管理方法、***、计算机设备和计算机可读存储介质
CN110704863A (zh) * 2019-08-23 2020-01-17 深圳市随手科技有限公司 配置信息处理方法、装置、计算机设备和存储介质
US20200057781A1 (en) * 2018-08-20 2020-02-20 Salesforce.org Mapping and query service between object oriented programming objects and deep key-value data stores
CN111125743A (zh) * 2018-10-31 2020-05-08 上海哔哩哔哩科技有限公司 权限管理方法、***、计算机设备及计算机可读存储介质
CN111177789A (zh) * 2020-01-07 2020-05-19 江苏满运软件科技有限公司 权限管理方法、***、设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101441688A (zh) * 2007-11-20 2009-05-27 阿里巴巴集团控股有限公司 一种用户权限分配方法和一种用户权限控制方法
CN102882834A (zh) * 2011-07-13 2013-01-16 阿里巴巴集团控股有限公司 一种权限控制方法及装置
CN107111519A (zh) * 2014-11-11 2017-08-29 亚马逊技术股份有限公司 用于管理和调度容器的***
CN107545047A (zh) * 2017-08-17 2018-01-05 平安科技(深圳)有限公司 用户权限数据的查询方法及终端设备
CN108280365A (zh) * 2017-09-19 2018-07-13 平安科技(深圳)有限公司 数据访问权限管理方法、装置、终端设备及存储介质
CN110503427A (zh) * 2018-05-16 2019-11-26 北京嘀嘀无限科技发展有限公司 支付管理方法、***、计算机设备和计算机可读存储介质
US20200057781A1 (en) * 2018-08-20 2020-02-20 Salesforce.org Mapping and query service between object oriented programming objects and deep key-value data stores
CN111125743A (zh) * 2018-10-31 2020-05-08 上海哔哩哔哩科技有限公司 权限管理方法、***、计算机设备及计算机可读存储介质
CN110399747A (zh) * 2019-07-18 2019-11-01 佳都新太科技股份有限公司 一种用户权限关联方法、查询方法及装置
CN110704863A (zh) * 2019-08-23 2020-01-17 深圳市随手科技有限公司 配置信息处理方法、装置、计算机设备和存储介质
CN111177789A (zh) * 2020-01-07 2020-05-19 江苏满运软件科技有限公司 权限管理方法、***、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"《小型微型计算机***》第36卷(2015年)总目次", 小型微型计算机***, no. 12, 15 December 2015 (2015-12-15) *

Similar Documents

Publication Publication Date Title
WO2013187934A2 (en) System and method for the creation of, automatic synchronization of, and access to multi-cloud documents that reside across dissimilar clouds, devices, and operating systems and that are accessed by multiple dissimilar applications
CN112564988A (zh) 告警处理方法、装置及电子设备
CN112860777B (zh) 数据处理方法、装置及设备
CN108376064B (zh) 规则引擎***及规则引擎的相关方法
CN111563015A (zh) 数据监控方法及装置、计算机可读介质及终端设备
CN111817984A (zh) 消息发送方法、装置、设备及存储介质
CN111400170A (zh) 一种数据权限测试方法及装置
US20200342008A1 (en) System for lightweight objects
CN104809114A (zh) 一种面向视频大数据的并行数据挖掘方法
CN111046106A (zh) 缓存数据同步方法、装置、设备及介质
CN114070847B (zh) 服务器的限流方法、装置、设备及存储介质
US9703788B1 (en) Distributed metadata in a high performance computing environment
CN116723002B (zh) 基于态势感知的电力报告智能加密方法
CN117421302A (zh) 一种数据处理方法及相关设备
CN117093619A (zh) 一种规则引擎处理方法、装置、电子设备及存储介质
CN113779517A (zh) 一种权限获取方法、装置、设备及存储介质
CN116185889A (zh) 一种基于对象隐藏的内存优化方法、智能终端及存储介质
US9009731B2 (en) Conversion of lightweight object to a heavyweight object
CN115858322A (zh) 日志数据处理方法、装置和计算机设备
CN115455006A (zh) 数据处理方法、数据处理装置、电子设备及存储介质
CN114860295A (zh) 资源文件更新方法、装置、设备及可读存储介质
CN114238391A (zh) 数据分页查询方法、装置、电子设备及存储介质
CN108958967A (zh) 一种数据处理的方法以及服务器
US11144593B2 (en) Indexing structure with size bucket indexes
CN115604000B (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