CN103412766A - 基于用户权限的数据访问方法和装置 - Google Patents
基于用户权限的数据访问方法和装置 Download PDFInfo
- Publication number
- CN103412766A CN103412766A CN2013104002317A CN201310400231A CN103412766A CN 103412766 A CN103412766 A CN 103412766A CN 2013104002317 A CN2013104002317 A CN 2013104002317A CN 201310400231 A CN201310400231 A CN 201310400231A CN 103412766 A CN103412766 A CN 103412766A
- Authority
- CN
- China
- Prior art keywords
- data access
- parameter
- access instruction
- information
- sql
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于用户权限的数据访问方法和装置,其中,该数据访问方法包括:在用户向数据库发出访问指令的情况下,接收预先封装的用户的信息参数,其中,信息参数包括权限参数和操作目标参数;将参数信息与访问指令进行整合;传输整合后的访问指令。本发明通过将权限参数和操作目标参数整合至访问指令中,能够使每个用户访问与其权限对应的数据,从而针对不同用户的权限实现数据权限控制,并且该方法可推广至不同的领域中。
Description
技术领域
本发明涉及计算机领域,并且特别地,涉及一种基于用户权限的数据访问方法和装置。
背景技术
权限控制是应用系统中普遍使用的模块,功能权限和数据权限是权限控制中的重要内容。其中,功能权限主要是以RBAC(Role-Based Access Control,即基于角色的访问控制)模型来设计,而数据权限要在功能权限的基础上根据外部条件动态地对数据进行过滤,使拥有不同数据权限的用户分别看到各自有权操作的数据。虽然现有技术中一般是由SQL(Structured Query Language,即结构化查询语言)来最终控制数据权限的控制,但是需要生成动态SQL才能很好地实现数据权限控制,而目前用于生成动态SQL的方式以及其主要缺点在于:
由数据库存储过程拼写生成动态SQL的方式,缺点在于由数据库后台拼写SQL效率比较高,但是可移植性不好,跟固定的数据库产品绑定较密切,通用性较差;
完全由程序代码拼写生成动态SQL的方式,缺点在于根据外部条件用程序动态拼写SQL效率比较低,并且程序代码比较分散,难以控制。
针对相关技术中难以在较大的应用范围中实现数据权限控制的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中难以在较大的应用范围中实现数据权限控制的问题,本发明提出一种基于用户权限的数据访问方法和装置,能够在不同领域中针对不同用户的权限实现数据权限控制。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种基于用户权限的数据访问方法。
该数据访问方法包括:
在用户向数据库发出访问指令的情况下,接收预先封装的用户的信息参数,其中,信息参数包括权限参数和操作目标参数;
将参数信息与访问指令进行整合;
传输整合后的访问指令。
其中,接收预先封装的信息参数包括:
面向切面编程AOP模块接收预先封装的信息参数;
并且,将参数信息与访问指令进行整合包括:
AOP模块将参数信息插入到访问指令中。
可选地,传输整合后的访问指令包括以下至少之一:
将访问指令通过数据访问对象直接传输至数据访问层;
将访问指令与传输载体进行整合后传输至数据访问层。
并且,在将访问指令与传输载体进行整合后传输至数据访问层的情况下,在数据访问层中从整合后的结果中提取信息参数,并根据提取的信息参数生成动态结构化查询语言SQL。
此外,该数据访问方法进一步包括:
数据访问层根据信息参数生成动态结构化查询语言SQL;
数据访问层在访问数据库时执行动态SQL;
显示执行动态SQL后的结果。
可选地,生成动态SQL包括:
数据访问层根据信息参数通过代码生成工具生成动态SQL;和/或
数据访问层根据信息参数和预先配置的SQL模版生成动态SQL。
优选地,上述数据访问层基于持久层框架IBatis配置。
根据本发明的另一个方面,提供了一种基于用户权限的数据访问装置。
该数据访问装置包括:
接收模块,用于在用户向数据库发出访问指令的情况下,接收预先封装的用户的信息参数,其中,信息参数包括权限参数和操作目标参数;
整合模块,用于将参数信息与访问指令进行整合;
传输模块,用于传输整合后的访问指令。
其中,接收模块用于使面向切面编程AOP模块接收预先封装的信息参数;
并且,整合模块用于使AOP模块将参数信息插入到访问指令中。
可选地,传输模块用于将访问指令通过数据访问对象直接传输至数据访问层;和/或将访问指令与传输载体进行整合后传输至数据访问层。
本发明通过将权限参数和操作目标参数整合至访问指令中,能够使每个用户访问与其权限对应的数据,从而针对不同用户的权限实现数据权限控制,并且该方法可推广至不同的领域中。
附图说明
图1是根据本发明实施例的基于用户权限的数据访问方法的流程图;
图2是根据本发明实施例的基于用户权限的数据访问装置的框图;
图3是根据本发明的一个实施例的数据访问方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种基于用户权限的数据访问方法。
如图1所示,根据本发明实施例的数据访问方法包括:
步骤S101,在用户向数据库发出访问指令的情况下,接收预先封装的用户的信息参数,其中,信息参数包括权限参数和操作目标参数;
步骤S103,将参数信息与访问指令进行整合;
步骤S105,传输整合后的访问指令,可以将访问指令通过数据访问对象直接传输至数据访问层,和/或将访问指令与传输载体进行整合后传输至数据访问层,并且可以基于持久层框架IBatis配置数据访问层。
在另一个实施例中,在接收预先封装的信息参数时,可以调用面向切面编程AOP(Aspect Oriented Programming)模块接收预先封装的信息参数;并且,在将参数信息与访问指令进行整合时,可以调用AOP模块将参数信息插入到访问指令中。本发明的技术方案结合了AOP面向切面编程的特点,将判断角色信息提供参数的功能统一使用切点表达式定义好,代码集中、好管理。
此外,在将访问指令与传输载体进行整合后传输至数据访问层的情况下,在数据访问层中从整合后的结果中提取信息参数,并根据提取的信息参数生成动态结构化查询语言SQL。
此外,根据本发明实施例的数据访问方法进一步包括:数据访问层根据信息参数生成动态结构化查询语言SQL;数据访问层在访问数据库时执行动态SQL;显示执行动态SQL后的结果。其中,数据访问层可以基于持久层框架IBatis配置,本发明的技术方案基于IBatis框架对拼写动态SQL做了原始优化,解决了单纯使用程序拼写SQL而导致效率低的问题。
可选地,生成动态SQL可以是数据访问层根据信息参数通过代码生成工具生成动态SQL;也可以是数据访问层根据信息参数和预先配置的SQL模版生成动态SQL。
优选地,文中提及的数据访问层可以基于持久层框架IBatis配置。
根据本发明的另一个实施例,提供了一种基于用户权限的数据访问装置。
如图2所示,根据本发明实施例的数据访问装置包括:
接收模块,用于在用户向数据库发出访问指令的情况下,接收预先封装的用户的信息参数,其中,信息参数包括权限参数和操作目标参数;
整合模块,用于将参数信息与访问指令进行整合;
传输模块,用于传输整合后的访问指令。
其中,接收模块用于使面向切面编程AOP模块接收预先封装的信息参数;
并且,整合模块用于使AOP模块将参数信息插入到访问指令中。
可选地,传输模块用于将访问指令通过数据访问对象直接传输至数据访问层;和/或将访问指令与传输载体进行整合后传输至数据访问层。
根据本发明的一个实施例,提供了一种以AOP技术和IBatis技术为基础的数据访问方法。
使用IBatis架构的数据库访问层,可以利用IBatis架构提供的动态SQL,将数据权限传入MappedSQLStatement中。优选地,可以利用基于实例的查询,即SelectByExample,不但改动较小,而且查询方案更简洁。通过IBatis工具Abator(用于IBatis的代码生成器),可以生成in条件的动态SQL。也可以在配置文件中写好SQL模板,由外部参数来控制最终生成的SQL内容。
具体的数据权限由AOP拦截器实现,在运行时动态织入,以期解除耦合。比如对查询来说,AOP拦截器,拦截BO(Business Object,业务对象层)或者DAO(Data Access Objects,数据访问对象是第一个面向对象的接口)方法,判断方法中的参数是否为被控制对象,该对象是否受到限制,如果是,则通过反射机制,根据数据权限配置,修改该对象的相应参数。该方案能够根据用户的角色信息(包括数据权限信息)动态获取该用户的数据权限内的数据。
如图3所示,该实施例的具体实现步骤可以包括:
步骤S301,根据AOP切点表达式拦截符合条件的访问请求,其中,访问请求中包括用户的权限参数和操作目标参数;
步骤S303,判断访问请求是否满足AOP切点表达式,在满足的情况下,执行步骤S305,在满足的情况下,执行步骤S307;
步骤S305,以正常SQL的情况处理该访问请求,即将SQL中用于添加用户的权限参数的位置置零处理,表示该用户的权限最大,可以访问数据库中的所有数据;
步骤S307,判断是否为控制对象,即判断是否为BO或者DAO,在满足的情况下,执行步骤S305,在满足的情况下,执行步骤S309;
步骤S309,将外部参数(即用户的权限参数和操作目标参数)设置到控制对象中,即将外部参数设置到BO或者DAO中;
步骤S311,将控制对象传到数据库操作层;
步骤S313,IBatis根据配置依据控制对象生成动态SQL。
步骤S315,执行SQL,即执行生成的动态SQL或正常SQL,可以实现在用户访问数据库时,访问到该用户对应的数据权限的数据的功能。
综上所述,借助于本发明的上述技术方案,本发明通过将权限参数和操作目标参数整合至访问指令中,能够使每个用户访问与其权限对应的数据,从而针对不同用户的权限实现数据权限控制,并且该方法可推广至不同的领域中,进一步地,以AOP技术和IBatis技术为基础能够根据用户信息动态获取数据的方法,并且该技术方案结合了AOP面向切面编程的特点和IBatis能够生成动态SQL的能力,将判断角色信息提供参数的功能统一使用切点表达式定义好,代码集中、好管理;同时,IBatis框架在对动态SQL的拼写方面做了原始优化,解决了使用程序拼写SQL效率低的问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于用户权限的数据访问方法,其特征在于,包括:
在用户向数据库发出访问指令的情况下,接收预先封装的所述用户的信息参数,其中,所述信息参数包括权限参数和操作目标参数;
将所述参数信息与所述访问指令进行整合;
传输整合后的所述访问指令。
2.根据权利要求1所述的数据访问方法,其特征在于,接收预先封装的所述信息参数包括:
面向切面编程AOP模块接收预先封装的所述信息参数;
并且,将所述参数信息与所述访问指令进行整合包括:
所述AOP模块将所述参数信息插入到所述访问指令中。
3.根据权利要求1所述的数据访问方法,其特征在于,传输整合后的所述访问指令包括以下至少之一:
将所述访问指令通过数据访问对象直接传输至数据访问层;
将所述访问指令与传输载体进行整合后传输至数据访问层。
4.根据权利要求3所述的数据访问方法,其特征在于,在将所述访问指令与传输载体进行整合后传输至所述数据访问层的情况下,在所述数据访问层中从所述整合后的结果中提取所述信息参数,并根据提取的所述信息参数生成动态结构化查询语言SQL。
5.根据权利要求1所述的数据访问方法,其特征在于,进一步包括:
所述数据访问层根据所述信息参数生成动态结构化查询语言SQL;
所述数据访问层在访问所述数据库时执行所述动态SQL;
显示执行所述动态SQL后的结果。
6.根据权利要求5所述的数据访问方法,其特征在于,生成动态SQL包括:
所述数据访问层根据所述信息参数通过代码生成工具生成动态SQL;和/或
所述数据访问层根据所述信息参数和预先配置的SQL模版生成动态SQL。
7.根据权利要求3-6中任一项所述的数据访问方法,其特征在于,所述数据访问层基于持久层框架IBatis配置。
8.一种基于用户权限的数据访问装置,其特征在于,包括:
接收模块,用于在用户向数据库发出访问指令的情况下,接收预先封装的所述用户的信息参数,其中,所述信息参数包括权限参数和操作目标参数;
整合模块,用于将所述参数信息与所述访问指令进行整合;
传输模块,用于传输整合后的所述访问指令。
9.根据权利要求8所述的数据访问装置,其特征在于,所述接收模块用于使面向切面编程AOP模块接收预先封装的所述信息参数;
并且,所述整合模块用于使所述AOP模块将所述参数信息插入到所述访问指令中。
10.根据权利要求8所述的数据访问装置,其特征在于,所述传输模块用于将所述访问指令通过数据访问对象直接传输至数据访问层;和/或将所述访问指令与传输载体进行整合后传输至数据访问层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013104002317A CN103412766A (zh) | 2013-09-05 | 2013-09-05 | 基于用户权限的数据访问方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013104002317A CN103412766A (zh) | 2013-09-05 | 2013-09-05 | 基于用户权限的数据访问方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103412766A true CN103412766A (zh) | 2013-11-27 |
Family
ID=49605779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013104002317A Pending CN103412766A (zh) | 2013-09-05 | 2013-09-05 | 基于用户权限的数据访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103412766A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809254A (zh) * | 2015-05-19 | 2015-07-29 | 郑州悉知信息技术有限公司 | 一种数据查询方法及装置 |
CN106528185A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种应用接口管理方法和装置 |
CN106656622A (zh) * | 2016-12-29 | 2017-05-10 | 深圳Tcl新技术有限公司 | 一种接口调用任务配置的方法与装置 |
CN107944288A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 一种数据访问控制方法和装置 |
CN108388809A (zh) * | 2018-01-17 | 2018-08-10 | 链家网(北京)科技有限公司 | 一种数据范围控制方法和系统 |
CN112818391A (zh) * | 2021-01-26 | 2021-05-18 | 四川天翼网络服务有限公司 | 一种基于切面编程的权限控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104607A (zh) * | 2011-03-10 | 2011-06-22 | 易程(苏州)软件股份有限公司 | 访问业务的安全控制方法、装置及系统 |
CN103049684A (zh) * | 2012-12-21 | 2013-04-17 | 大唐软件技术股份有限公司 | 一种基于rbac模型扩展的数据权限控制方法和系统 |
-
2013
- 2013-09-05 CN CN2013104002317A patent/CN103412766A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104607A (zh) * | 2011-03-10 | 2011-06-22 | 易程(苏州)软件股份有限公司 | 访问业务的安全控制方法、装置及系统 |
CN103049684A (zh) * | 2012-12-21 | 2013-04-17 | 大唐软件技术股份有限公司 | 一种基于rbac模型扩展的数据权限控制方法和系统 |
Non-Patent Citations (1)
Title |
---|
TOM_LT: "《新浪博客http://blog.sina.com.cn/s/blog_539d361e0100nceo.html》", 12 May 2007 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809254A (zh) * | 2015-05-19 | 2015-07-29 | 郑州悉知信息技术有限公司 | 一种数据查询方法及装置 |
CN106528185A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种应用接口管理方法和装置 |
CN107944288A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 一种数据访问控制方法和装置 |
CN106656622A (zh) * | 2016-12-29 | 2017-05-10 | 深圳Tcl新技术有限公司 | 一种接口调用任务配置的方法与装置 |
CN106656622B (zh) * | 2016-12-29 | 2020-04-24 | 深圳Tcl新技术有限公司 | 一种接口调用任务配置的方法与装置 |
CN108388809A (zh) * | 2018-01-17 | 2018-08-10 | 链家网(北京)科技有限公司 | 一种数据范围控制方法和系统 |
CN108388809B (zh) * | 2018-01-17 | 2021-02-02 | 贝壳找房(北京)科技有限公司 | 一种数据范围控制方法和系统 |
CN112818391A (zh) * | 2021-01-26 | 2021-05-18 | 四川天翼网络服务有限公司 | 一种基于切面编程的权限控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103412766A (zh) | 基于用户权限的数据访问方法和装置 | |
CN104364750B (zh) | 用于触摸数据和显示区域控制的分布式预处理的方法、装置和系统 | |
CN104063290B (zh) | 处理超时的系统、方法和装置 | |
CN108986806A (zh) | 基于声源方向的语音控制方法及系统 | |
Bagheri et al. | Software architectural principles in contemporary mobile software: from conception to practice | |
CN104363211A (zh) | 一种权限管理方法及系统 | |
CN109074341A (zh) | 减少引脚计数接口 | |
CN101673358B (zh) | 基于权限组件对工作流组件中的权限管理的方法及装置 | |
US20160300157A1 (en) | LambdaLib: In-Memory View Management and Query Processing Library for Realizing Portable, Real-Time Big Data Applications | |
CN103209189A (zh) | 一种基于分布式文件系统的移动云存储安全访问控制方法 | |
CN105912334A (zh) | 一种autosar软件组件的内部行为对象代码生成方法 | |
CN104156640A (zh) | 一种数据访问权限控制方法 | |
CN108319849A (zh) | 基于安卓双容器系统的设备策略管理系统及管理域实现方法 | |
CN104732123A (zh) | 一种基于json格式的功能操作权限控制方法 | |
CN115242644A (zh) | 一种微服务开发治理系统 | |
CN112269982A (zh) | 基于权限配置的数据访问控制的方法 | |
CN107094184A (zh) | 一种基于时间策略的移动终端管控系统 | |
CN104217146A (zh) | 一种基于abac和rbac的权限控制方法 | |
CN103677819A (zh) | 基于osgi的代码正向工程的实现方法和实现装置 | |
CN106599718A (zh) | 信息访问权限的控制方法及装置 | |
CN110941422B (zh) | 代码自动生成方法、代码生成器及可读存储介质 | |
CN112596711A (zh) | 一种基于Web系统的个性化权限管理设置方法及系统 | |
CN101620592A (zh) | Pdf和xml结合存储数据的方法 | |
CN109598130A (zh) | 知识产权数据查询系统、方法、装置、设备及存储介质 | |
CN109063439A (zh) | 一种用于Spark SQL的用户权限控制方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131127 |