一种数据权限独立控制的方法技术

技术编号:36385555 阅读:12 留言:0更新日期:2023-01-18 09:48
本发明专利技术提供一种数据权限独立控制的方法,属于应用系统的数据处理方法技术领域,将数据权限控制模块单独作为一个可插拔插件,在需要进行数据权限控制的应用中,只需引入该插件,并进行少量的配置,即可使用,实现了数据权限控制功能的即插即用。本方法支持数据权限的定制化实现,可针对应用中的部分指定功能模块进行数据权限控制,而对其他未指定的功能模块不限制。本发明专利技术为应用系统中涉及数据权限控制功能的开发工作提供了便利,可有效提高相关模块研发效率。研发效率。研发效率。

【技术实现步骤摘要】
一种数据权限独立控制的方法


[0001]本专利技术涉及应用系统的数据处理方法
,尤其涉及一种数据权限独立控制的方法。

技术介绍

[0002]在应用系统中,经常会有数据权限控制方面的要求,如基于登录用户的角色、权限、归属等指标,在同一页面中给用户展示出不同的数据。常规的操作是,在每个数据查询对应的后端sql中,拼接上相关指标的筛选条件。这就造成了大量重复的sql拼接工作,给后期的开发及维护工作带来困难和困扰。由此,我们期望能出现一个专门进行数据权限控制的模块,统一对登录用户的权限进行过滤、筛选,且最好是插件方式,可方便的在各个应用系统间进行复用。

技术实现思路

[0003]为了解决以上技术问题,本专利技术提供了一种数据权限独立控制的方法,将数据权限控制功能作为一个独立的模块,即插即用,便于复用,从而提高应用系统的研发效率。
[0004]本专利技术的技术方案是:
[0005]一种数据权限独立控制的方法,将数据权限控制功能单独设为一个可插拔插件,在需要进行数据权限控制的应用中引入该插件,并进行配置,即可使用。
[0006]进一步的,
[0007]基于SpringBoot+MyBatis框架,在自定义的拦截器中,获取登录用户信息及角色权限,并按照指定的筛选条件或指标,使用mybatis的BoundSql功能,对相关查询语句进行sql片段拼接、重新组装,从而得到带有数据权限限制条件的sql,进而获取到对应权限内可见的数据。
[0008]为该拦截器添加注解,基于SpringBoot的AOP切面,便于管理应用系统中,哪部分需要进行数据权限控制,实现数据权限的功能定制化。
[0009]再进一步的,
[0010]使用方式如下:
[0011]a)应用系统中引入该插件jar包;
[0012]b)数据库中新建data_privilege_config表,用于对应模块的sql片段配置;
[0013]c)在Mapper层,对需要进行数据权限控制的类或方法添加注解@DataPrivilege,参数为data_privilege_config表中配置的module值;注解可为方法级,也可为类级。调用时方法级的优先级最高,类级次之;
[0014]d)mybatis配置文件中添加拦截器配置,注意顺序,要放在分页拦截器之后,即先于分页执行。
[0015]再进一步的,
[0016]具体步骤如下:
[0017]1)在Mapper层,通过AOP注解的方式,区分是否需进行数据权限筛选;若不需进行数据权限筛选,则执行既有的逻辑即可,无需经过该插件;
[0018]2)进入该插件,在拦截器中根据注解查询配置的sql片段,并解析,检查是否存在占位符:
[0019]若不存在占位符,则可直接拼接sql片段。
[0020]若存在占位符,则查询用户角色、权限、归属等信息,并使用对应信息替换占位符,再拼接替换后的sql片段。
[0021]3)执行带有数据权限筛选条件的sql,得到最终的数据。
[0022]实现逻辑如下:
[0023]a)开始数据查询之前,针对添加了数据权限注解的Mapper类或方法,首先经过该插件的拦截器;
[0024]b)在拦截器中,根据注解中的模块信息,查询配置的对应的sql片段,并解析其中是否存在占位符;
[0025]若不存在占位符,则可直接进行sql拼接;
[0026]若存在占位符,则需查询用户的角色、权限、归属等相关信息,并用查询到的具体信息替换占位符,再将替换之后的sql与原查询语句进行拼接,得到最终需要的sql;
[0027]c)使用mybatis的BoundSql功能,执行最终的sql语句,得到最终经过数据权限控制筛选之后的数据。
[0028]本专利技术的有益效果是
[0029]通过使用数据权限独立模块的插件方式,可方便地在不同应用系统间进行复用;通过基于SpringBoot的AOP切面注解,可实现数据权限的功能定制化,便于管理及区分不同的权限控制模块;通过配置实现数据权限过滤指标,只需修改相关配置即可,实现数据权限的数据定制化。由此达到即插即用,便于复用,从而提高应用系统的研发效率。
附图说明
[0030]附图1为数据权限独立模块插件使用方式示意图;
[0031]附图2为数据权限独立模块处理流程图。
具体实施方式
[0032]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0033]本专利技术基于SpringBoot+MyBatis框架,在自定义的拦截器中,获取登录用户信息及角色权限,并按照指定的筛选条件或指标,使用mybatis的BoundSql功能,对相关查询语句进行sql片段拼接、重新组装,从而得到带有数据权限限制条件的sql,进而获取到对应权限内可见的数据。
[0034]同时为该拦截器添加注解,基于SpringBoot的AOP切面,便于管理应用系统中,哪部分需要进行数据权限控制,实现数据权限的功能定制化。
[0035]本方法可指定应用系统所需要的数据权限过滤指标,通过配置实现,便于在不同应用系统中复用,只需修改相关配置即可,实现数据权限的数据定制化。
[0036]另外,本专利技术将数据权限作为一个独立的模块,其插件方式,即插即用,使用方便,实现了数据权限的模块化。
[0037]使用方式如下:
[0038]a)应用系统中引入该插件jar包;
[0039]b)数据库中新建data_privilege_config表,用于对应模块的sql片段配置;
[0040]c)在Mapper层,对需要进行数据权限控制的类或方法添加注解@DataPrivilege,参数为data_privilege_config表中配置的module值。注解可为方法级,也可为类级。调用时方法级的优先级最高,类级次之。
[0041]d)mybatis配置文件中添加拦截器配置,注意顺序,要放在分页拦截器之后,即先于分页执行。
[0042]技术实现逻辑如下:
[0043]a)开始数据查询之前,针对添加了数据权限注解的Mapper类或方法,会首先经过数据权限独立插件模块的拦截器;
[0044]b)拦截器中,根据注解中的模块信息,查询配置的对应的sql片段,并解析其中是否存在占位符;
[0045]c)若不存在占位符,则可直接进行sql拼接;
[0046]d)若存在占位符,则需查询用户的角色、权限、归属等相关信息,并用查询到的具体信息替换占位符,再将替换之后的sql与原查询语句进行拼接,得到最终需要的sql;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据权限独立控制的方法,其特征在于,将数据权限控制功能单独设为一个可插拔插件,在需要进行数据权限控制的应用中引入该插件,并进行配置,即可使用。2.根据权利要求1所述的方法,其特征在于,基于SpringBoot+MyBatis框架,在自定义的拦截器中,获取登录用户信息及角色权限,并按照指定的筛选条件或指标,使用mybatis的BoundSql功能,对相关查询语句进行sql片段拼接、重新组装,从而得到带有数据权限限制条件的sql,进而获取到对应权限内可见的数据。3.根据权利要求2所述的方法,其特征在于,为该拦截器添加注解,基于SpringBoot的AOP切面,便于管理应用系统中,对需要进行数据权限控制的部分实现数据权限的功能定制化。4.根据权利要求3所述的方法,其特征在于,使用方式如下:a)应用系统中引入该插件jar包;b)数据库中新建data_privilege_config表,用于对应模块的sql片段配置;c)在Mapper层,对需要进行数据权限控制的类或方法添加注解@DataPrivilege,参数为data_privilege_config表中配置的...

【专利技术属性】
技术研发人员:李腾飞陈尧张目飞
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1