CN113434534A - 数据权限拦截方法 - Google Patents
数据权限拦截方法 Download PDFInfo
- Publication number
- CN113434534A CN113434534A CN202110978219.9A CN202110978219A CN113434534A CN 113434534 A CN113434534 A CN 113434534A CN 202110978219 A CN202110978219 A CN 202110978219A CN 113434534 A CN113434534 A CN 113434534A
- Authority
- CN
- China
- Prior art keywords
- data
- annotation
- sql
- interception
- intercepting
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2448—Query languages for particular applications; for extensibility, e.g. user defined types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及数据安全技术领域,提供一种数据权限拦截方法,包括以下步骤:定义第一方法和第二方法,其中,所述第一方法用以实现业务需求,所述第二方法为数据权限的断言方法;定义注解,其中,所述注解包含指定断言方法名称的属性;在所述第一方法上添加所述注解,并指定断言方法名称为所述第二方法;定义拦截组件,其中,所述拦截组件拦截对有所述注解的方法的调用;在所述拦截组件拦截到对所述第一方法的调用后,调用所述注解中指定的所述第二方法;如果成功执行所述第二方法,则执行所述第一方法;如果未成功执行所述第二方法,则中断对所述第一方法的调用。本发明能够大大提高含数据权限拦截功能的项目的开发的方便性。
Description
技术领域
本发明涉及数据安全技术领域,具体涉及一种数据权限拦截方法。
背景技术
信息化时代的大背景下,软件项目越来越庞大,除了需要满足业务需求的功能性需求外,还需要考虑到数据访问权限的不同,限制不同的用户只能操作权限范围内数据的安全性需求。常规的开发模式下,为了满足数据权限访问控制的要求,开发人员在编码时,需要在业务功能SQL(Structured Query Language,结构化查询语言)语句中硬编码数据过滤的SQL条件。随着切面编程的兴起,另一种基于注解的形式,将数据过滤条件动态的注入到ORM(Object Relational Mapping,对象关系映射)框架中,并与业务功能SQL语句片段进行拼接,形成完整的带数据过滤条件的SQL。
不管是通过硬编码还是通过动态拼接的方式,目的都是组合成一个完整的带数据过滤条件的SQL去执行,因此就存在以下缺陷:(1)组合在一起就必须要保证语法的正确性,数据过滤条件SQL只是Where语句之后的条件部分,受限于业务功能SQL中使用的表名或字段名;(2)当数据权限策略变更时,除了修改数据过滤条件SQL外,还需要在业务功能SQL的from部分来引入业务功能本不需要的表,从而污染和破坏了业务功能SQL的可读性;(3)由于业务功能SQL和数据过滤条件的SQL紧耦合,破坏了高内聚低耦合的原则,同时,混杂在一起的逻辑条件,导致对开发人员的要求变高,编码复杂且繁琐。
发明内容
本发明为解决上述技术问题,提供了一种数据权限拦截方法,能够实现业务功能SQL与数据权限SQL的解耦,在编写时两个SQL段可独立编写,无需了解彼此具体写法,并且也不限制各自SQL中表名或字段名,同时,实现了数据权限的可配置,在数据权限策略变化时无需修改业务功能代码,仅需修改配置或修改数据权限代码,从而大大提高含数据权限拦截功能的项目的开发的方便性。
本发明采用的技术方案如下:
一种数据权限拦截方法,包括以下步骤:定义第一方法和第二方法,其中,所述第一方法用以实现业务需求,所述第二方法为数据权限的断言方法;定义注解,其中,所述注解包含指定断言方法名称的属性;在所述第一方法上添加所述注解,并指定断言方法名称为所述第二方法;定义拦截组件,其中,所述拦截组件拦截对有所述注解的方法的调用;在所述拦截组件拦截到对所述第一方法的调用后,调用所述注解中指定的所述第二方法;如果成功执行所述第二方法,则执行所述第一方法;如果未成功执行所述第二方法,则中断对所述第一方法的调用。
其中,所述第一方法为新增类、修改类、删除类的方法。
其中,所述第一方法的参数为要操作的数据条件,所述第一方法调用实现业务功能的SQL段。
其中,所述第二方法的参数为对象数组,所述第二方法调用实现数据权限查询的SQL段。
其中,在调用所述注解中指定的所述第二方法时,将调用所述第一方法的参数转换为对象数组传入所述第二方法。
其中,所述拦截组件为切面拦截组件。
本发明的有益效果:
本发明的数据权限拦截方法,通过将实现业务需求的SQL段和数据权限功能的SQL段分别定义为两个独立的方法,实现了二者的解耦,由此,在编写时两个SQL段可独立编写,无需了解彼此具体写法,并且也不限制各自SQL中表名或字段名;同时,实现了数据权限的可配置,在数据权限策略变化时无需修改业务功能代码,仅需修改配置或修改数据权限代码,从而大大提高含数据权限拦截功能的项目的开发的方便性。
附图说明
图1为本发明实施例的数据权限拦截方法的流程图;
图2为本发明一个实施例的方法调用过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例的数据权限拦截方法包括以下步骤:
S1,定义第一方法和第二方法,其中,第一方法用以实现业务需求,第二方法为数据权限的断言方法。
在本发明的一个实施例中,第一方法可为新增类、修改类、删除类的方法,第一方法的参数为要操作的数据条件,第一方法调用实现业务功能的SQL段,该SQL段不实现数据权限过滤。第二方法的参数为对象数组,第二方法调用实现数据权限查询的SQL段,获取参数条件的数据范围。
也就是说,在本发明的实施例中,对于SQL数据库编程,可将实现业务需求的SQL段和数据权限功能的SQL段分别定义为两个独立的方法,一个实现业务需求的功能,一个实现特定数据权限过滤功能,相互独立开来,实现解耦,满足高内聚低耦合的原则。
S2,定义注解,其中,注解包含指定断言方法名称的属性。
本发明实施例中所定义的注解,是一个方法级的数据权限过滤标识的注解。
S3,在第一方法上添加注解,并指定断言方法名称为第二方法。
S4,定义拦截组件,其中,拦截组件拦截对有注解的方法的调用。
在本发明的实施例中,拦截组件为切面拦截组件,该切面拦截组件可拦截所有的被上述注解标识的方法的调用。
S5,在拦截组件拦截到对第一方法的调用后,调用注解中指定的第二方法。
参照图2,在调用者请求调用第一方法M时,例如前端调用某数据访问SQL段,由于该第一方法M有注解D,切面拦截组件可拦截对该第一方法M的调用。在切面拦截组件拦截到对第一方法M的调用后,可调用注解D指定的断言方法,即第二方法A,并将调用第一方法M的参数转换为对象数组传入第二方法A。
S6,如果成功执行第二方法,则执行第一方法。
参照图2,如果成功执行完第二方法A,没有抛出异常,则说明有执行第一方法M的权限,即有实现相应业务需求的权限,此时可继续调用并执行第一方法M,并返回执行结果,以及最终将执行结果返回给调用者。
S7,如果未成功执行第二方法,则中断对第一方法的调用。
参照图2,如果执行第二方法A的结果是抛出了异常,无权限,则中断对第一方法M的调用,并向调用者抛出权限不足异常。
根据本发明实施例的数据权限拦截方法,通过将实现业务需求的SQL段和数据权限功能的SQL段分别定义为两个独立的方法,实现了二者的解耦,由此,在编写时两个SQL段可独立编写,无需了解彼此具体写法,并且也不限制各自SQL中表名或字段名;同时,实现了数据权限的可配置,在数据权限策略变化时无需修改业务功能代码,仅需修改配置或修改数据权限代码,从而大大提高含数据权限拦截功能的项目的开发的方便性。
在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (6)
1.一种数据权限拦截方法,其特征在于,包括以下步骤:
定义第一方法和第二方法,其中,所述第一方法用以实现业务需求,所述第二方法为数据权限的断言方法;
定义注解,其中,所述注解包含指定断言方法名称的属性;
在所述第一方法上添加所述注解,并指定断言方法名称为所述第二方法;
定义拦截组件,其中,所述拦截组件拦截对有所述注解的方法的调用;
在所述拦截组件拦截到对所述第一方法的调用后,调用所述注解中指定的所述第二方法;
如果成功执行所述第二方法,则执行所述第一方法;
如果未成功执行所述第二方法,则中断对所述第一方法的调用。
2.根据权利要求1所述的数据权限拦截方法,其特征在于,所述第一方法为新增类、修改类、删除类的方法。
3.根据权利要求2所述的数据权限拦截方法,其特征在于,所述第一方法的参数为要操作的数据条件,所述第一方法调用实现业务功能的SQL段。
4.根据权利要求3所述的数据权限拦截方法,其特征在于,所述第二方法的参数为对象数组,所述第二方法调用实现数据权限查询的SQL段。
5.根据权利要求4所述的数据权限拦截方法,其特征在于,在调用所述注解中指定的所述第二方法时,将调用所述第一方法的参数转换为对象数组传入所述第二方法。
6.根据权利要求5所述的数据权限拦截方法,其特征在于,所述拦截组件为切面拦截组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110978219.9A CN113434534A (zh) | 2021-08-25 | 2021-08-25 | 数据权限拦截方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110978219.9A CN113434534A (zh) | 2021-08-25 | 2021-08-25 | 数据权限拦截方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113434534A true CN113434534A (zh) | 2021-09-24 |
Family
ID=77797801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110978219.9A Pending CN113434534A (zh) | 2021-08-25 | 2021-08-25 | 数据权限拦截方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434534A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414643A (zh) * | 2020-03-17 | 2020-07-14 | 深圳市前海随手财富管理有限公司 | 数据权限控制方法、装置、服务器及存储介质 |
CN111966587A (zh) * | 2020-08-06 | 2020-11-20 | 中国建设银行股份有限公司 | 数据采集方法、装置和设备 |
CN112269982A (zh) * | 2020-11-19 | 2021-01-26 | 四川长虹电器股份有限公司 | 基于权限配置的数据访问控制的方法 |
CN112948861A (zh) * | 2021-03-09 | 2021-06-11 | 浪潮云信息技术股份公司 | 基于微服务的元数据权限管理方法及装置 |
-
2021
- 2021-08-25 CN CN202110978219.9A patent/CN113434534A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414643A (zh) * | 2020-03-17 | 2020-07-14 | 深圳市前海随手财富管理有限公司 | 数据权限控制方法、装置、服务器及存储介质 |
CN111966587A (zh) * | 2020-08-06 | 2020-11-20 | 中国建设银行股份有限公司 | 数据采集方法、装置和设备 |
CN112269982A (zh) * | 2020-11-19 | 2021-01-26 | 四川长虹电器股份有限公司 | 基于权限配置的数据访问控制的方法 |
CN112948861A (zh) * | 2021-03-09 | 2021-06-11 | 浪潮云信息技术股份公司 | 基于微服务的元数据权限管理方法及装置 |
Non-Patent Citations (1)
Title |
---|
一枚小白: "如何优雅的使用切面和注解实现权限验证", 《HTTPS://SEGMENTFAULT.COM/A/1190000019921989》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389829B (zh) | 多租户环境中扩展对象的分类与分发 | |
Sullivan et al. | Reconciling environment integration and software evolution | |
EP0727739B1 (en) | Object-oriented programming interface for developing and running network management applications on a network communication infrastructure | |
US7757282B2 (en) | System and method for distinguishing safe and potentially unsafe data during runtime processing | |
US9229790B2 (en) | Projecting native application programming interfaces of an operating system into other programming languages | |
Balzer et al. | Mediating connectors | |
US9395963B1 (en) | System and method for accessing meta-data in a dynamically typed array-based language | |
US20030179244A1 (en) | Method and system for assured denotation of application semantics | |
US20130238593A1 (en) | System and method for supporting agile development in an enterprise crawl and search framework environment | |
US8261248B2 (en) | System and method of executing a dynamic program in a structured environment | |
US9361137B2 (en) | Managing application parameters based on parameter types | |
JP2006244498A (ja) | オブジェクトリレーショナルデータ用のデータモデル | |
US8032898B2 (en) | Kernel interface with categorized kernel objects | |
US8813258B2 (en) | Selectively exposing base class libraries based on application execution context | |
KR20110099214A (ko) | 동결된 개체들을 위한 형식 설명자 관리 | |
US7506341B2 (en) | System and method for controlling user interface properties with data | |
CN113434534A (zh) | 数据权限拦截方法 | |
CA2470177A1 (en) | System and method for controlling user interface properties with data | |
US20010025370A1 (en) | Method and system for protecting resource central programs | |
Bao et al. | A model-driven approach for enforcing fine-grained access control for SQL queries | |
PeBenito et al. | Reference policy for security enhanced linux | |
AU2019100212A4 (en) | System and method for developing modularized application | |
Gao et al. | Achieving Transparent and Real-time Collaboration in Co-AutoCAD Application. | |
CN111562993B (zh) | 一种动态切换数据源的Web应用系统 | |
Barrett et al. | An event-based software integration framework |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210924 |
|
RJ01 | Rejection of invention patent application after publication |