权限过滤方法、装置、计算机设备及存储介质与流程

文档序号:26361063发布日期:2021-08-20 20:37阅读:123来源:国知局
权限过滤方法、装置、计算机设备及存储介质与流程

本申请涉及大数据技术领域,尤其涉及一种权限过滤方法、装置、计算机设备及存储介质。



背景技术:

权限管理是应用系统中不可缺少的一个部分,在权限系统的作用下,一切行为皆有边界。系统用户很多,系统功能也很多,不同用户对系统功能的需求不同。为了保证用户隐私安全或信息安全,往往关键的、重要的系统功能只能限制给部分的用户使用。除此之外,为了信息传输方便,系统功能往往也需要根据不同的用户去定制。

传统的权限过滤中,通常是需要给每一个需要接入权限的接口,单独的调用查询用户权限的公共方法,将用户权限设置到参数中,并在对应的sql中添加上权限过滤的条件。这往往需要大幅度地更改程序代码,且系统稳定性风险也会随之提升,最终导致权限过滤效率低下的问题。



技术实现要素:

本申请实施例的目的在于提出一种权限过滤方法、装置、计算机设备及存储介质,以解决权限过滤效率低下的技术问题。

为了解决上述技术问题,本申请实施例提供一种权限过滤方法,采用了如下所述的技术方案:

接受目标用户的权限过滤请求,根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限;

在确定所述目标用户拥有所述资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口;

获取所述目标请求接口对应的权限语句,根据预设的权限拦截器获取所述权限语句对应的权限字段,并根据所述权限拦截器获取所述权限字段对应的目标数据库语句;

将所述权限语句作为子查询拼接至所述目标数据库语句中,得到权限过滤后的拼接语句。

进一步的,所述根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限的步骤包括:

获取所述目标用户的资源权限表,通过所述预设过滤器确定所述权限过滤请求对应的总请求接口是否存在于所述资源权限表中;

在所述总请求接口存在于所述资源权限表中时,确定所述目标用户拥有所述目标对象的资源处理权限。

进一步的,所述获取所述目标用户的资源权限表的步骤具体包括:

调用权限中心,并获取所述目标用户的账号信息;

根据所述账号信息登录所述权限中心,基于所述权限中心获取所述目标用户的资源权限表。

进一步的,所述通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口的步骤之前,包括:

基于预设的所述切面拦截器调用权限中心,得到所述目标用户的数据权限,将所述数据权限设置在所述切面拦截器的请求参数中。

进一步的,所述根据所述权限拦截器获取所述权限字段对应的目标数据库语句的步骤包括:

根据所述权限拦截器获取数据库中存储的所有数据主表和数据从表,确定所述数据主表和所述数据从表的表字段是否与所述权限字段一致;

在所述数据主表和所述数据从表的表字段均与所述权限字段一致时,确定所述数据主表和所述数据从表中的数据为所述权限语句对应的目标数据库语句。

进一步的,在所述确定所述数据主表和所述数据从表的表字段是否与所述权限字段一致的步骤之后,包括:

在所述数据主表和所述数据从表中任意一个表的表字段与所述权限字段不一致时,根据所述权限拦截器获取所述权限语句对应的表别名;

根据所述表别名查找到所述权限语句对应的目标数据库语句。

进一步的,在所述接受目标用户的权限过滤请求的步骤之后还包括:

解析所述权限过滤请求,获取所述权限过滤请求对应的目标对象的数量;

在所述目标对象的数量大于等于预设数量时,配置权限过滤开关,根据所述权限过滤开关对所有所述目标对象进行统一权限管理。

为了解决上述技术问题,本申请实施例还提供一种权限过滤装置,采用了如下所述的技术方案:

确认模块,用于接受目标用户的权限过滤请求,根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限;

获取模块,用于在确定所述目标用户拥有所述资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口;

拦截模块,用于获取所述目标请求接口对应的权限语句,根据预设的权限拦截器获取所述权限语句对应的权限字段,并根据所述权限拦截器获取所述权限字段对应的目标数据库语句;

拼接模块,用于将所述权限语句作为子查询拼接至所述目标数据库语句中,得到权限过滤后的拼接语句。

为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:

接受目标用户的权限过滤请求,根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限;

在确定所述目标用户拥有所述资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口;

获取所述目标请求接口对应的权限语句,根据预设的权限拦截器获取所述权限语句对应的权限字段,并根据所述权限拦截器获取所述权限字段对应的目标数据库语句;

将所述权限语句作为子查询拼接至所述目标数据库语句中,得到权限过滤后的拼接语句。

为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:

接受目标用户的权限过滤请求,根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限;

在确定所述目标用户拥有所述资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口;

获取所述目标请求接口对应的权限语句,根据预设的权限拦截器获取所述权限语句对应的权限字段,并根据所述权限拦截器获取所述权限字段对应的目标数据库语句;

将所述权限语句作为子查询拼接至所述目标数据库语句中,得到权限过滤后的拼接语句。

本申请提出的权限过滤方法,通过接受目标用户的权限过滤请求,根据预设过滤器确定目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限,通过对目标用户的资源处理权限进行确定,确保了资源数据的安全性;之后,在确定目标用户拥有资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有目标权限标识的目标请求接口,根据切面拦截器可以在不影响整体代码框架的情况下对目标请求接口进行拦截;而后,获取目标请求接口对应的权限语句,根据预设的权限拦截器获取权限语句对应的权限字段,并根据权限拦截器获取权限字段对应的目标数据库语句;最后,将权限语句作为子查询拼接至目标数据库语句中,得到权限过滤后的拼接语句,实现了对数据权限的自动过滤,节省了数据过滤时长,提高了数据权限过滤效率。

附图说明

为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请可以应用于其中的示例性系统架构图;

图2根据本申请的权限过滤方法的一个实施例的流程图;

图3是根据本申请的权限过滤装置的一个实施例的结构示意图;

图4是根据本申请的计算机设备的一个实施例的结构示意图。

附图标记:权限过滤装置300、确认模块301、获取模块302、拦截模块303以及拼接模块304。

具体实施方式

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。

服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。

需要说明的是,本申请实施例所提供的权限过滤方法一般由服务器/终端设备执行,相应地,权限过滤装置一般设置于服务器/终端设备中。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的权限过滤的方法的一个实施例的流程图。所述的权限过滤方法,包括以下步骤:

步骤s201,接受目标用户的权限过滤请求,根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限。

在本实施例中,权限是指对目标对象进行操作的集合,权限过滤请求即为目标用户发出对目标对象进行操作的请求。基于服务端接收权限过滤请求,在服务端接收到该权限过滤请求时,则根据预设过滤器确定发送该权限操作请求对应的目标用户,是否具有目标对象的资源处理权限。其中,资源处理权限主要包括对菜单和服务等基于页面的目标对象的处理权限,过滤器则为权限过滤器(filter)。具体地,当对目标对象的权限过滤请求到达服务端时,对该权限过滤请求进行解析,得到url(uniformresourcelocator,统一资源定位器)的目标对象;之后,从目标图表中查找是否存在与该目标对象匹配的关键词,如果存在该关键词,则读取该关键词对应的键值,并将该键值引用至数组中;而后,继续向后查找,直至该目标图表查找完毕。由此,在数组中即会存在按照查找顺序排好的filter引用,在数组中的所有filter全部执行完毕时,跳转至权限过滤请求对应的目标对象。通过filter判断url地址是否可以被目标用户访问,如果不可以则跳转至登录界面。

步骤s202,在确定所述目标用户拥有所述资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口。

在本实施例中,在确定目标用户拥有该资源处理权限时,则获取目标权限标识。该目标权限标识为预先设定的数据权限标识,对于需要进行权限处理的目标请求接口,会预先通过该目标权限标识对该目标请求接口进行标识。在得到该目标权限标识时,则通过预设的切面拦截器,如基于aop(aspectorientedprogramming,面向切面编程)的切面拦截器,拦截具有该目标权限标识的请求接口。具体地,aop(aspectorientedprogramming,面向切面编程)为一种通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。在得到目标权限标识时,获取预先编译的拦截代码,根据该切面拦截器对应的拦截代码拦截所有的总请求接口,确定每个总请求接口中是否具有该目标权限标识,若具有该目标权限标识则确定该总请求接口为目标请求接口,对该目标请求接口进行拦截;对于不具备该目标权限标识的总请求接口,则通过该总请求接口。

步骤s203,获取所述目标请求接口对应的权限语句,根据预设的权限拦截器获取所述权限语句对应的权限字段,并根据所述权限拦截器获取所述权限字段对应的目标数据库语句。

在本实施例中,权限语句包括角色和权限列表。在拦截到具有目标权限过滤标识的目标请求接口时,获取该目标请求接口对应的请求参数,该请求参数中填充有预先通过权限中心获取的权限语句,根据该请求参数即可获取到该目标请求接口对应的权限语句。而后,通过预设权限拦截器(如mybatis拦截器)获取权限字段,以及该权限字段对应的目标数据库语句。其中,权限字段为预先设定的进行权限过滤的字段信息,如“部门a”,在该权限字段为“部门a”时,即表示需要对具有“部门a”下数据处理权限的用户进行过滤,使得该用户能够获取“部门a”下的数据,并对该“部门a”下的数据进行处理;目标数据库语句为目标拼接的数据库语句,一般情况下为业务语句。

步骤s204,将所述权限语句作为子查询拼接至所述目标数据库语句中,得到权限过滤后的拼接语句。

在本实施例中,在得到权限语句和目标数据库语句之后,将该权限语句作为子查询拼接在目标数据库语句中,由此,即可实现对目标数据库语句的权限过滤。具体地,在sql中一个select-from-where语句称为一个查询块,将一个查询块嵌套在另一个查询块的where字句或having短语的条件中查询块称为子查询或内层查询,上层的查询块为父查询或外层查询,子查询的结果作为输入传递回“父查询”或“外部查询”,子查询的本质上是一个完整的select语句。目标数据库语句则为当前权限语句中字段对应的数据库语句,在得到权限语句和该权限语句对应的目标数据库语句时,则将该权限语句作为该目标数据库语句的子查询拼接在目标数据库语句中(如目标数据库语句的where语句后),即得到权限过滤后的拼接语句。存储该拼接语句至数据库中,在目标用户对拥有权限的数据进行查询时,则可根据该拼接语句从数据库中获取到对应的数据。

需要强调的是,为进一步保证上述拼接语句的私密和安全性,上述拼接语句还可以存储于一区块链的节点中。

本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

本申请实现了对数据权限的自动过滤,节省了数据过滤时长,提高了数据权限过滤效率。

在本实施例的一些可选的实现方式中,上述根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限包括:

获取所述目标用户的资源权限表,通过所述预设过滤器确定所述权限过滤请求对应的总请求接口是否存在于所述资源权限表中;

在所述总请求接口存在于所述资源权限表中时,确定所述目标用户拥有所述目标对象的资源处理权限。

在本实施例中,在接受到目标用户的权限过滤请求时,获取该目标用户的资源权限表,该资源权限表中即包括了当前该目标用户可进行权限操作的所有资源,该资源则包括目标对象和权限功能。通过预设过滤器确定该权限过滤请求对应的总请求接口是否存在于该资源权限表中,若该总请求接口存在于该资源权限表中,则确定目标用户拥有权限过滤请求对应目标对象的资源处理权限;若该总请求接口不存在于该资源权限表中,则确定目标用户不拥有权限过滤请求对应目标对象的资源处理权限,拦截该权限过滤请求。

本实施例通过资源权限表对用户的资源处理权限进行确定,对于不在资源权限表的用户则拒绝处理,进一步确保了用户信息的安全性。

在本实施例的一些可选的实现方式中,上述获取所述目标用户的资源权限表包括:

调用权限中心,并获取所述目标用户的账号信息;

根据所述账号信息登录所述权限中心,基于所述权限中心获取所述目标用户的资源权限表。

在本实施例中,在获取目标用户的资源权限表时,可通过权限中心获得该资源权限表。具体地,调用权限中心,并获取目标用户的账号信息,该账号信息包括目标用户的账号名称和账号密码。根据该账号信息登录权限中心,通过该权限中心获取目标用户的资源权限列表。此外,该资源权限列表也可预先缓存在服务器中,在获取目标用户的资源权限表时,直接根据目标用户的账号信息从缓存中获取该资源权限表,以提高数据获取效率。

本实施例通过权限信息获取资源权限表,实现了对资源权限表的安全获取,避免了用户信息的泄露,确保了用户信息的安全。

在本实施例的一些可选的实现方式中,在上述通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口之前,包括:

基于预设的所述切面拦截器调用权限中心,得到所述目标用户的数据权限,将所述数据权限设置在所述切面拦截器的请求参数中。

在本实施例中,在通过预设的切面拦截器对具有目标权限标识的接口进行拦截之前,需要通过目标权限标识对需要进行权限处理的接口进行标记。具体地,基于预设的切面拦截器调用权限中心,从权限中心获取目标用户的数据权限,并将该数据权限设置至该数据权限对应的请求参数中。该数据权限为与资源处理权限并列的处理权限,如对数据库中数据的增改删等操作,该数据权限的目标对象则具体可以为数据的行和列。以自定义权限过滤标识@auth为例,预先获取权限字段,该权限字段为预先设定的进行权限过滤的字段信息,在得到该权限字段后,根据该权限字段获取需要进行权限处理的总请求接口,对该总请求接口通过@auth进行注解填充,之后将该@auth设置在该请求接口的请求参数中,经过权限过滤标识填充后的请求接口即为上述的目标请求接口。在通过切面拦截器拦截具有过滤权限标识的目标请求接口时,则只需要检测总请求接口的请求参数是否存在该@auth标识即可,具有过滤权限标识的总请求接口即为目标请求接口。

本实施例通过预先对切面拦截器进行设置,使得通过该切面拦截器能够对具有目标权限标识的请求接口进行拦截,实现了对需要进行权限设置的接口的大批量拦截,进一步提高了权限过滤的效率。

在本实施例的一些可选的实现方式中,上述通过根据所述权限拦截器获取所述权限字段对应的目标数据库语句包括:

根据所述权限拦截器获取数据库中存储的所有数据主表和数据从表,确定所述数据主表和所述数据从表的表字段是否与所述权限字段一致;

在所述数据主表和所述数据从表的表字段均与所述权限字段一致时,确定所述数据主表和所述数据从表中的数据为所述权限语句对应的目标数据库语句。

在本实施例中,根据权限拦截器获取数据库中存储的所有数据主表、数据从表以及权限字段。其中,数据主表和数据从表为数据库中建立的表格,数据从表依赖于数据主表;权限字段为预先设定的进行权限过滤的字段信息,根据该权限字段可以对数据进行过滤。判断数据主表和数据从表的表字段是否与该权限字段一致,若该数据主表和数据从表的表字段均与该权限字段一致,则将该数据主表和数据从表下的数据均作为目标数据库语句。

本实施例通过预设权限拦截器对权限字段和目标数据库语句进行拦截,提高了需要进行权限过滤的数据获取效率,进一步提高了数据权限过滤效率。

在本实施例的一些可选的实现方式中,在上述确定所述数据主表和所述数据从表的表字段是否与所述权限字段一致之后,包括:

在所述数据主表和所述数据从表中任意一个表的表字段与所述权限字段不一致时,根据所述权限拦截器获取所述权限语句对应的表别名;

根据所述表别名查找到所述权限语句对应的目标数据库语句。

在本实施例中,在数据库中可以为表名称及字段名称指定别名,在查询时通过表别名可以提高数据查询的效率。因此,在根据权限拦截器获取到数据主表和数据从表时,若该数据主表和数据从表中任意一个表的表字段与权限字段不一致,则根据预设权限拦截器获取该权限语句对应的表别名,根据该表别名查找得到对应的数据,该数据即为该权限语句对应的目标数据库语句。

本实施例通过表别名获取目标数据库语句,实现了对目标数据库语句的准确获取,进一步提高了权限过滤的准确率。

在本实施例的一些可选的实现方式中,在上述接受目标用户的权限过滤请求之后,包括:

解析所述权限过滤请求,获取所述权限过滤请求对应的目标对象的数量;

在所述目标对象的数量大于等于预设数量时,配置权限过滤开关,根据所述权限过滤开关对所有所述目标对象进行统一权限管理。

在本实施例中,在接收到目标用户的权限过滤请求时,解析该权限过滤请求,得到该权限过滤请求对应的目标对象的数量。其中,目标对象为需要进行权限过滤的对象。确定该目标对象的数量是否大于等于预设数量,若该目标对象的数量大于等于预设数量,则在配置文件中配置权限过滤开关,根据该权限过滤开关对所有的目标对象进行统一地权限管理;若该目标对象的数量小于预设数量,则无需配置权限过滤开关,只需对当前权限过滤请求对应的目标对象进行单独的权限管理即可。

本实施例通过设置权限过滤开关,使得通过权限过滤开关能够对目标对象进行统一的权限管理,进一步提高了在大批量数据和不同目标对象时,权限过滤的效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种权限过滤装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图3所示,本实施例所述的权限过滤装置300包括:确认模块301、获取模块302、拦截模块303以及拼接模块304。其中:

确认模块301,用于接受目标用户的权限过滤请求,根据预设过滤器确定所述目标用户是否拥有所述权限过滤请求对应目标对象的资源处理权限;

在本实施例的一些可选的实现方式中,确认模块301包括:

第一获取单元,用于获取所述目标用户的资源权限表,通过所述预设过滤器确定所述权限过滤请求对应的总请求接口是否存在于所述资源权限表中;

第一确认单元,用于在所述总请求接口存在于所述资源权限表中时,确定所述目标用户拥有所述目标对象的资源处理权限。

在本实施例的一些可选的实现方式中,获取单元包括:

调用子单元,用于调用权限中心,并获取所述目标用户的账号信息;

获取子单元,用于根据所述账号信息登录所述权限中心,基于所述权限中心获取所述目标用户的资源权限表。

在本实施例中,权限是指对目标对象进行操作的集合,权限过滤请求即为目标用户发出对目标对象进行操作的请求。基于服务端接收权限过滤请求,在服务端接收到该权限过滤请求时,则根据预设过滤器确定发送该权限操作请求对应的目标用户,是否具有目标对象的资源处理权限。其中,资源处理权限主要包括对菜单和服务等基于页面的目标对象的处理权限,过滤器则为权限过滤器(filter)。具体地,当对目标对象的权限过滤请求到达服务端时,对该权限过滤请求进行解析,得到url(uniformresourcelocator,统一资源定位器)的目标对象;之后,从目标图表中查找是否存在与该目标对象匹配的关键词,如果存在该关键词,则读取该关键词对应的键值,并将该键值引用至数组中;而后,继续向后查找,直至该目标图表查找完毕。由此,在数组中即会存在按照查找顺序排好的filter引用,在数组中的所有filter全部执行完毕时,跳转至权限过滤请求对应的目标对象。通过filter判断url地址是否可以被目标用户访问,如果不可以则跳转至登录界面。

获取模块302,用于在确定所述目标用户拥有所述资源处理权限时,获取目标权限标识,通过预设的切面拦截器拦截具有所述目标权限标识的目标请求接口;

在本实施例中,在确定目标用户拥有该资源处理权限时,则获取目标权限标识。该目标权限标识为预先设定的数据权限标识,对于需要进行权限处理的目标请求接口,会预先通过该目标权限标识对该目标请求接口进行标识。在得到该目标权限标识时,则通过预设的切面拦截器,如基于aop(aspectorientedprogramming,面向切面编程)的切面拦截器,拦截具有该目标权限标识的请求接口。具体地,aop(aspectorientedprogramming,面向切面编程)为一种通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。在得到目标权限标识时,获取预先编译的拦截代码,根据该切面拦截器对应的拦截代码拦截所有的总请求接口,确定每个总请求接口中是否具有该目标权限标识,若具有该目标权限标识则确定该总请求接口为目标请求接口,对该目标请求接口进行拦截;对于不具备该目标权限标识的总请求接口,则通过该总请求接口。

拦截模块303,用于获取所述目标请求接口对应的权限语句,根据预设的权限拦截器获取所述权限语句对应的权限字段,并根据所述权限拦截器获取所述权限字段对应的目标数据库语句;

在本实施例的一些可选的实现方式中,拦截模块303包括:

第二确认单元,用于根据所述权限拦截器获取数据库中存储的所有数据主表和数据从表,确定所述数据主表和所述数据从表的表字段是否与所述权限字段一致;

第三确认单元,用于在所述数据主表和所述数据从表的表字段均与所述权限字段一致时,确定所述数据主表和所述数据从表中的数据为所述权限语句对应的目标数据库语句。

第二获取单元,用于在所述数据主表和所述数据从表中任意一个表的表字段与所述权限字段不一致时,根据所述权限拦截器获取所述权限语句对应的表别名;

查找单元,用于根据所述表别名查找到所述权限语句对应的目标数据库语句。

在本实施例中,权限语句包括角色和权限列表。在拦截到具有目标权限过滤标识的目标请求接口时,获取该目标请求接口对应的请求参数,该请求参数中填充有预先通过权限中心获取的权限语句,根据该请求参数即可获取到该目标请求接口对应的权限语句。而后,通过预设权限拦截器(如mybatis拦截器)获取权限字段,以及该权限字段对应的目标数据库语句。其中,权限字段为预先设定的进行权限过滤的字段信息,如“部门a”,在该权限字段为“部门a”时,即表示需要对具有“部门a”下数据处理权限的用户进行过滤,使得该用户能够获取“部门a”下的数据,并对该“部门a”下的数据进行处理;目标数据库语句为目标拼接的数据库语句,一般情况下为业务语句。

拼接模块304,用于将所述权限语句作为子查询拼接至所述目标数据库语句中,得到权限过滤后的拼接语句。

在本实施例中,在得到权限语句和目标数据库语句之后,将该权限语句作为子查询拼接在目标数据库语句中,由此,即可实现对目标数据库语句的权限过滤。具体地,在sql中一个select-from-where语句称为一个查询块,将一个查询块嵌套在另一个查询块的where字句或having短语的条件中查询块称为子查询或内层查询,上层的查询块为父查询或外层查询,子查询的结果作为输入传递回“父查询”或“外部查询”,子查询的本质上是一个完整的select语句。目标数据库语句则为当前权限语句中字段对应的数据库语句,在得到权限语句和该权限语句对应的目标数据库语句时,则将该权限语句作为该目标数据库语句的子查询拼接在目标数据库语句中(如目标数据库语句的where语句后),即得到权限过滤后的拼接语句。存储该拼接语句至数据库中,在目标用户对拥有权限的数据进行查询时,则可根据该拼接语句从数据库中获取到对应的数据。

需要强调的是,为进一步保证上述拼接语句的私密和安全性,上述拼接语句还可以存储于一区块链的节点中。

本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

在本实施例的一些可选的实现方式中,上述权限过滤装置300还包括:

设置模块,用于基于预设的所述切面拦截器调用权限中心,得到所述目标用户的数据权限,将所述数据权限设置在所述切面拦截器的请求参数中。

在本实施例中,在通过预设的切面拦截器对具有目标权限标识的接口进行拦截之前,需要通过目标权限标识对需要进行权限处理的接口进行标记。具体地,基于预设的切面拦截器调用权限中心,从权限中心获取目标用户的数据权限,并将该数据权限设置至该数据权限对应的请求参数中。该数据权限为与资源处理权限并列的处理权限,如对数据库中数据的增改删等操作,该数据权限的目标对象则具体可以为数据的行和列。以自定义权限过滤标识@auth为例,预先获取权限字段,该权限字段为预先设定的进行权限过滤的字段信息,在得到该权限字段后,根据该权限字段获取需要进行权限处理的总请求接口,对该总请求接口通过@auth进行注解填充,之后将该@auth设置在该请求接口的请求参数中,经过权限过滤标识填充后的请求接口即为上述的目标请求接口。在通过切面拦截器拦截具有过滤权限标识的目标请求接口时,则只需要检测总请求接口的请求参数是否存在该@auth标识即可,具有过滤权限标识的总请求接口即为目标请求接口。

解析模块,用于解析所述权限过滤请求,获取所述权限过滤请求对应的目标对象的数量;

配置模块,用于在所述目标对象的数量大于等于预设数量时,配置权限过滤开关,根据所述权限过滤开关对所有所述目标对象进行统一权限管理。

在本实施例中,在接收到目标用户的权限过滤请求时,解析该权限过滤请求,得到该权限过滤请求对应的目标对象的数量。其中,目标对象为需要进行权限过滤的对象。确定该目标对象的数量是否大于等于预设数量,若该目标对象的数量大于等于预设数量,则在配置文件中配置权限过滤开关,根据该权限过滤开关对所有的目标对象进行统一地权限管理;若该目标对象的数量小于预设数量,则无需配置权限过滤开关,只需对当前权限过滤请求对应的目标对象进行单独的权限管理即可。

本实施例提出的权限过滤装置,实现了对数据权限的自动过滤,节省了数据过滤时长,提高了数据权限过滤效率。

为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。

所述计算机设备6包括通过系统总线相互通信连接存储器61、处理器62、网络接口63。需要指出的是,图中仅示出了具有组件61-63的计算机设备6,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。

所述存储器61至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器61可以是所述计算机设备6的内部存储单元,例如该计算机设备6的硬盘或内存。在另一些实施例中,所述存储器61也可以是所述计算机设备6的外部存储设备,例如该计算机设备6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器61还可以既包括所述计算机设备6的内部存储单元也包括其外部存储设备。本实施例中,所述存储器61通常用于存储安装于所述计算机设备6的操作系统和各类应用软件,例如权限过滤方法的计算机可读指令等。此外,所述存储器61还可以用于暂时地存储已经输出或者将要输出的各类数据。

所述处理器62在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制所述计算机设备6的总体操作。本实施例中,所述处理器62用于运行所述存储器61中存储的计算机可读指令或者处理数据,例如运行所述权限过滤方法的计算机可读指令。

所述网络接口63可包括无线网络接口或有线网络接口,该网络接口63通常用于在所述计算机设备6与其他电子设备之间建立通信连接。

本实施例提出的计算机设备,实现了对数据权限的自动过滤,节省了数据过滤时长,提高了数据权限过滤效率。

本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的权限过滤方法的步骤。

本实施例提出的计算机可读存储介质,实现了对数据权限的自动过滤,节省了数据过滤时长,提高了数据权限过滤效率。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。

显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1