CN112084167A - 一种权限过滤方法、装置及存储介质 - Google Patents
一种权限过滤方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112084167A CN112084167A CN201910515952.XA CN201910515952A CN112084167A CN 112084167 A CN112084167 A CN 112084167A CN 201910515952 A CN201910515952 A CN 201910515952A CN 112084167 A CN112084167 A CN 112084167A
- Authority
- CN
- China
- Prior art keywords
- data model
- field
- authority
- dimension table
- filtering
- 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
- 238000001914 filtration Methods 0.000 title claims abstract description 132
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013499 data model Methods 0.000 claims abstract description 220
- 238000004590 computer program Methods 0.000 claims description 4
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 4
- 238000012423 maintenance Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013079 data visualisation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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/21—Design, administration or maintenance of databases
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种权限过滤方法、装置及存储介质,具体包括:对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库;基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段;通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值;将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。采用本发明能够避免开发维护通配符解析器、业务深度绑定、用户使用困难等问题。
Description
技术领域
本发明涉及互联网信息技术领域,特别涉及一种权限过滤方法、装置及存储介质。
背景技术
现在业界数据可视化平台大多都未提供数据权限设置功能,即一个人配置的报表,有权限访问的所有人看到的数据都一样,无法达到千人前面的效果。
现有有的平台提供了简单的数据权限设计,采用的方法是为某个字段,例如用户标识字段(UserID)或日期,设置一个过滤值和逻辑运算符,该值采用通配符的形式,如为用户标识字段设置过滤值为#{用户标识值},逻辑连接符为AND,将请求参数转化为SQL结果为AND用户标识字段=#{用户标识值},这样在执行具体的SQL查询时,将通配符替换为登录人的用户标识值,如AND用户标识字段=‘zhangsan’,从而完成不同人看到不同权限数据的效果。
但是,该方案存在诸多问题:
1)需要维护大量的通配符解析器对用户设定的通配符进行解析;
2)如果有新的业务需求,则需要开发新的解析器;
3)通配符含义与业务深度绑定,不利于系统对外部署;
4)不同通配符使用方式与使用场景不同,每增加一种通配符,用户就需要重新学习,使用成本较高。
发明内容
本发明的目的在于提供了一种权限过滤方法,能够避免开发维护通配符解析器、业务深度绑定、用户使用困难等问题。
本发明实施例提供了一种权限过滤方法,该方法包括:
对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库;
基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段;
通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值;
将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。
本发明实施例还提供了一种权限过滤装置,该装置包括:
权限设置模块,对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库;
标准查询语句解析模块,基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段;
权限过滤值解析模块,通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值;
权限过滤值填充模块,将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。
本发明提供的权限过滤方法及装置,通过对数据模型进行权限设置,将数据模型权限字段关联的维表名称、字段存储到数据库;然后通过解析权限字段关联的维表及字段信息,得到权限字段对应的权限过滤值;最后对当前标准查询语句进行权限过滤值填充。本发明的权限过滤方法,通过采用数据模型关联维表的方式,替换掉现有技术中使用通配符的权限设计方案,从而避免了开发维护通配符解析器、业务深度绑定、用户使用困难等问题。
附图说明
图1为本发明实施例提供的一种权限过滤方法的流程示意图。
图2a为数据模型不关联维表的示意图。
图2b为数据模型关联基础维表的示意图。
图2c为数据模型关联普通维表的示意图。
图3为本发明实施例提供的一种权限过滤装置的结构示意图。
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明权限过滤方案包含两部分,第一部分是通过数据模型关联一张或多张维表,实现数据模型中某个字段的权限过滤设置,第二部分是基于第一部分的设置,解析出权限过滤值,对当前标准查询语句进行权限过滤值填充。
本发明实施例提出的一种权限过滤方法的流程示意图,如图1所示,包括以下步骤:
步骤11、对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库。
其中,对数据模型进行权限设置具体包括三种情况:
如果所述数据模型不关联维表,将数据模型中的第一字段标识为权限字段,所述第一字段为用户标识字段;
如果所述数据模型关联基础维表,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联基础维表中的基础维表字段,将基础维表中的用户标识字段标识为过滤字段;
如果所述数据模型关联普通维表,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联第一普通维表的第一字段,将第n普通维表的第二字段关联基础维表中的基础维表字段,将基础维表中的用户标识字段标识为过滤字段,n为大于等于1的整数;当n>1时,n个普通维表之间两两依次关联,将前一普通维表的第二字段关联后一普通维表的第一字段。
其中,关联字段指的是所关联的两个字段相同,例如,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联基础维表中的基础维表字段,指的是数据模型中的第一字段和基础维表中的基础维表字段相同。每个普通维表包括多个字段,其中的“第一字段”、“第二字段”是泛指,并非特指第一个字段、第二个字段。“第一字段”泛指与前表关联的字段,“第二字段”泛指与后表关联的字段。
步骤12、基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段。
步骤13、通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值。
该步骤具体包括:
如果所述数据模型不关联维表,获取请求用户标识的值,将作为权限字段的用户标识字段名称与作为权限过滤值的用户标识值进行对应存储;
如果所述数据模型关联基础维表,获取请求用户标识的值,根据请求用户标识的值,确定数据模型权限过滤值;将数据模型权限字段名称和数据模型权限过滤值进行对应存储;
如果所述数据模型关联普通维表,获取请求用户标识的值,根据请求用户标识的值,确定第n普通维表权限过滤值;根据第n普通维表权限过滤值,确定第n-1普通维表权限过滤值;根据第n-1普通维表权限过滤值确定第n-2普通维表权限过滤值;以此类推,根据第一普通维表权限过滤值确定数据模型权限过滤值;将数据模型权限字段名称和数据模型权限过滤值进行对应存储。
步骤14、将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。
其中,查询语句可以是SQL语句等,那么,标准查询语句可以是标准SQL语句,具有权限设置的查询语句可以是具有权限设置的SQL语句。
该步骤具体包括:
S141、将所述数据模型权限字段名称和权限过滤值拼装成过滤查询语句;
S142、获取当前标准查询语句的过滤条件表达式,
如果过滤条件表达式为空,则将所拼装的过滤查询语句设置为过滤条件的值;
如果过滤条件表达式不为空,则将过滤条件表达式通过AND连接符连接所拼装的过滤查询语句。
至此,完成了本发明的权限过滤方法。
优选地,该方法进一步包括:对数据模型中的多个字段进行权限设置,具体为:将数据模型中的多个字段标识为权限字段,并分别对每个权限字段进行关联维表。
优选地,所述数据模型为单张数据库表,或者多张数据库表关联的子查询,该方法进一步包括:
当所述数据模型为单张数据库表时,将具有权限设置的查询语句中的数据模型名称替换为其对应的数据库表名,且将表的别名设置为数据模型名称;
当所述数据模型为多张数据库表关联的子查询时,将具有权限设置的查询语句中的数据模型名称替换为子查询语句,且将子查询的别名设置为数据模型名称。
为清楚说明本发明下面列举具体场景进行说明。
1、多维表关联权限设置
多维表关联权限设置的流程包括维表设置、数据模型权限字段关联维表、关联信息存储。
a、维表设置
在可视化平台选择数据源创建数据模型环节,可以选择某个已创建的数据模型,将其标识为维表,数据模型可以是一张普通表,也可以是多张表关联查询结果集,可以理解为一张视图表,添加标识的数据模型,我们将其统称为维表,该维表的含义同数据仓库的维表含义一致。
维表分为基础维表和普通维表。基础维表必须包含用户标识字段,此类维表不能再关联其他维表,并且必须设定用户标识字段为过滤字段;普通维表则可以关联其他普通维表,形成维表关联链,链尾必须关联基础维表。
在对基于事实表创建的数据模型进行权限设定时,可以获取所有设定的维表以及维表对应的字段进行关联。
b、数据模型关联维表
在基于事实表创建的数据模型进行权限设定时,首先展示该数据模型中包含的字段以及所有的维表,然后选择数据模型中某个字段作为权限字段,使其关联维表中的某个字段,同时设置逻辑连接符(IN、NOT IN等),关联方式有三种,数据模型不关联维表直接过滤用户标识值、关联基础维表、关联普通维表,如下图2所示,图2a为数据模型不关联维表的示意图,图2b为数据模型关联基础维表的示意图,图2c为数据模型关联普通维表的示意图。
第一种情况:数据模型不关联维表直接卡权限字段,表示在执行SQL查询时,直接在where条件上拼接A0=用户标识值,直接对数据模型进行过滤。
这种情况下,假设将数据模型中的A0字段标识为权限字段,同时A0字段也是用户标识字段。不同的人请求登录后,获取用户标识值,将用户标识字段和用户标识值进行对应存储,然后填充在当前标准SQL语句过滤条件中,即,在执行SQL查询时,直接在where条件上拼接A0=用户标识值。如此,当张三登录时,在执行SQL查询时,直接在where条件上拼接(用户标识字段=张三);当李四登录时,在执行SQL查询时,直接在where条件上拼接(用户标识字段=李四),这样不同的人会看到不同权限的数据。
第二情况:数据模型关联基础维表,则表示数据模型A0字段关联基础维表A1字段,然后基础维表A2字段等于当前请求用户的用户标识字段。
这种情况下,假设将数据模型中的A0字段标识为权限字段,将基础维表中的A2字段标识为过滤字段。在具体场景中,数据模型A0权限字段为一级部门ID,基础维表A1字段为一级部门ID,A2字段为用户标识字段。不同的人请求登录后,获取请求用户的用户标识值,根据请求用户的用户标识值,执行“select A1 from基础维表where A2=‘用户标识值’”,获取A1的集合例如IN(23,24,25),表示一级部门的ID集合。A1的集合等于数据模型的权限过滤值,所以将(一级部门ID IN(23,24,25))填充在当前标准SQL语句过滤条件中。假设请求用户为张三,则,张三对应的一级部门ID为23、24、25,因此张三可以同时看到一级部门ID为23、24、25的数据。如此,可以实现不同部门的领导可以看到不同部门的数据。
第三情况:数据模型关联普通维表,则表示数据模型A0字段关联普通维表1的A1字段,普通维表1的A10字段关联普通维表2的A2字段,以此类推,普通维表n的An0字段关联基础维表的A1字段,基础维表的A2字段等于当前请求用户的用户标识字段。
这种情况下,假设将数据模型中的A0字段标识为权限字段,将基础维表中的A2字段标识为过滤字段。在具体场景中,数据模型A0权限字段为事业部ID,基础维表A1字段为一级部门ID,A2字段为用户标识字段。不同的人请求登录后,获取请求用户的用户标识值,根据请求用户的用户标识值,执行“select A1 from基础维表where A2=‘用户标识值’”,获取基础维表A1的集合例如A1 IN(23,24,25),表示一级部门的ID集合包含(23,24,25)。基础维表A1的集合等于第n普通维表权限过滤值。
然后根据第n普通维表权限过滤值IN(23,24,25)),执行“select An from普通维表n where An0 IN(23,24,25)”,获取An的集合。An的集合等于第n-1普通维表权限过滤值。以此类推,直到找到数据模型权限过滤值。当n=1时,数据模型的权限字段事业部ID关联第1普通维表的A1字段事业部ID,第1普通维表的A10字段一级部门ID关联基础维表的A1字段一级部门ID。在这种情况下,所获取An的集合例如An IN(100,200,300),在n=1时An IN(100,200,300)就是A1 IN(100,200,300),表示事业部ID集合包含(100,200,300)。第1普通维表A1的集合等于数据模型权限过滤值。所以将(事业部ID IN(100,200,300))填充在当前标准SQL语句过滤条件中。假设前述请求用户为张三,则,张三对应的事业部ID为100、200、3000,因此张三可以同时看到事业部ID为100、200、300的数据。
另外,在权限设定时,可以对基于事实表创建数据模型的多个字段进行权限设置,每个字段的权限设定流程相同,字段之间的逻辑连接符可以设置为OR或者AND,其中数据模型直接过滤用户标识字段和数据模型关联基础维表使用场景较多,数据模型关联普通维表多用于处理复杂的权限控制。
在对基于事实表创建数据模型的多个字段进行权限设置这种情况下,以数据模型不关联维表为例,假设将数据模型中的A0字段标识为权限字段,同时A0字段也是采购人员的用户标识字段;将数据模型中的B0字段标识为权限字段,同时B0字段也是销售人员的用户标识字段。如此,当张三登录时,在执行SQL查询时,直接在where条件上拼接(采购人员用户标识字段=张三AND销售人员用户标识字段=张三),表示张三既是采购人员又是销售人员时所看到的权限数据。
c、关联信息存储
通过数据模型与维表以及维表之间的关联关系,在保存权限设置信息时,会将数据模型权限字段关联的维表名称、字段以及逻辑连接符一块存储。
2、SQL填充权限过滤值
SQL权限过滤值填充的流程包括基于标准SQL构建AST抽象语法树、解析、权限过滤值填充。
a、基于标准SQL构建AST抽象语法树
当用户在可视化平台上完成操作后,系统会基于其选定的数据模型生成一段标准SQL语句,此时SQL中的表都是模型的名称(子查询或单表的别名),借助开源的工具Druid,利用其SQL Parser功能,依据数据源类型将标准SQL构建成AST抽象语法树,Druid的SQLParser功能很强大,支持多种数据库的SQL语法解析。
b、从上一步构建的AST中取出SQL查询用到的表,对应的是我们数据模型的名称,通过数据模型的名称,找到其设置权限的字段以及关联的维表名称、字段。需要注意的是,同一个数据源下,数据模型名称不能重复。
c、然后通过解析权限关联字段关联维表信息,得到权限字段对应的权限过滤值和逻辑连接符,可以将结果封装在Map<String,List<Object>>中。将结果封装在Map<String,List<Object>>中可以是其中的一种方式,包括但不限于此。
本步骤中,基于当前请求用户的用户标识信息,通过维表关联关系,解析数据模型设置权限的字段对应的权限过滤值。关联信息具体解析过程如下:
1)如果数据模型没有关联维表,而是直接设置过滤用户标识字段,
则获取请求用户的用户标识值,将作为数据模型权限字段的用户标识字段名称和请求用户的用户标识值存储在Map<String,List<Object>>结构中,map的key为数据模型权限字段名称,value为请求用户的用户标识值。
2)如果数据模型关联维表,且维表是基础维表,数据模型权限字段A0关联基础维表A1字段,基础维表A2字段通过用户标识值过滤,
则执行“select A1 from基础维表where A2=‘用户标识值’”,获取A1集合作为数据模型权限过滤值,并将结果存入Map<String,List<Object>>结构中,map的key为数据模型权限字段名称,value为A1集合。
3)如果数据模型关联维表,且维表是普通维表,
则递归操作普通维表,查询普通维表关联的维表,直到关联的表为基础维表获取过滤集合A1,递归回溯,链尾普通维表依据A1集合和逻辑运算符执行“SELECT A1链尾FROM链尾普通维表WHERE A2链尾IN A1集合”,得到链尾普通维表结果“A1集合链尾”,依次回溯,直到获取链头普通维表过滤值,最终获取数据模型权限字段需要的权限过滤值,将结果存入Map<String,List<Object>>结构中。
d、将此结果拼装成whereSQL语句,字段之间默认用OR,Map中的key代表权限字段名称,value代表权限过滤值,拼装结果样式为:(f1 IN(‘a’,’b’,’c’)OR f2 NOT IN(‘d’,’e’,’f’)),注意用小括号将结果包装起来。其中,f1 IN(‘a’,’b’,’c’)表示权限字段f1包含权限过滤值a、b、c;f2 NOT IN(‘d’,’e’,’f’)表示权限字段f2不包含权限过滤值d、e、f。并且权限字段f1和f2之间的逻辑连接符为OR,表示过滤条件中两个字段满足其中一个即可。
e、过滤条件拼装完成后,从所述AST抽象语法树中获取当前标准SQL语句的过滤条件表达式(whereExpr),如果whereExpr为null,则直接将拼装的where SQL语句设置为过滤条件的值;如果不为null,则将whereExpr通过AND连接符连接所拼装的where SQL语句,输出拼装后的SQL语句。
举例来说,根据当前数据模型生成的标准SQL语句为:
Select sum(gmv)from数据模型名称where date=20190312 group by一级部门ID
其中,过滤表达式为where date=20190312,不为空,则通过AND连接符连接所拼装的where SQL语句(f1 IN(‘a’,’b’,’c’)OR f2 NOT IN(‘d’,’e’,’f’)),拼装后的SQL语句表达为:
Select sum(gmv)from数据模型名称where date=20190312 AND(f1 IN(‘a’,’b’,’c’)OR f2 NOT IN(‘d’,’e’,’f’))group by一级部门ID
至此,权限过滤值填充完成。
优选地,在权限过滤值填充完成后,如果需要进行数据模型名称替换,则,分两种情况:数据模型可能是单张数据库表,也可能是多张表关联的子查询。如果是单张表,则将上一步生成具有权限设置的SQL语句中数据模型名称替换为其对应的数据库表名,且将表的别名设置为数据模型名称;如果是子查询,则将上一步生成具有权限设置的SQL语句中数据模型名称替换为子查询语句,同时将子查询的别名设置为数据模型名称。
基于相同的发明构思,本发明实施例还提供了一种权限过滤装置,结构示意图如图3所示,该装置包括:
权限设置模块301,对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库;
标准查询语句解析模块302,基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段;
权限过滤值解析模块303,通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值;
权限过滤值填充模块304,将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。
所述权限设置模块301,对数据模型进行权限设置,具体用于:
如果所述数据模型不关联维表,将数据模型中的第一字段标识为权限字段,所述第一字段为用户标识字段;
如果所述数据模型关联基础维表,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联基础维表中的基础维表字段,将基础维表中的用户标识字段标识为过滤字段;
如果所述数据模型关联普通维表,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联第一普通维表的第一字段,将第n普通维表的第二字段关联基础维表中的基础维表字段,将基础维表中的用户标识字段标识为过滤字段,n为大于等于1的整数;当n>1时,n个普通维表之间两两依次关联,将前一普通维表的第二字段关联后一普通维表的第一字段。
所述权限过滤值解析模块303,通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值具体用于:
如果所述数据模型不关联维表,获取请求用户标识的值,将作为权限字段的用户标识字段名称与作为权限过滤值的用户标识值进行对应存储;
如果所述数据模型关联基础维表,获取请求用户标识的值,根据请求用户标识的值,确定数据模型权限过滤值;将数据模型权限字段名称和数据模型权限过滤值进行对应存储;
如果所述数据模型关联普通维表,获取请求用户标识的值,根据请求用户标识的值,确定第n普通维表权限过滤值;根据第n普通维表权限过滤值,确定第n-1普通维表权限过滤值;根据第n-1普通维表权限过滤值确定第n-2普通维表权限过滤值;以此类推,根据第一普通维表权限过滤值确定数据模型权限过滤值;将数据模型权限字段名称和数据模型权限过滤值进行对应存储。
所述权限过滤值填充模块304,将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中具体用于:
将所述数据模型权限字段名称和权限过滤值拼装成过滤查询语句;
获取当前标准查询语句的过滤条件表达式,
如果过滤条件表达式为空,则将所拼装的过滤查询语句设置为过滤条件的值;
如果过滤条件表达式不为空,则将过滤条件表达式通过AND连接符连接所拼装的过滤查询语句。
所述数据模型为单张数据库表,或者多张数据库表关联的子查询,该装置进一步包括名称设置模块305:
所述名称设置模块305,当所述数据模型为单张数据库表时,将具有权限设置的查询语句中的数据模型名称替换为其对应的数据库表名,且将表的别名设置为数据模型名称;当所述数据模型为多张数据库表关联的子查询时,将具有权限设置的查询语句中的数据模型名称替换为子查询语句,且将子查询的别名设置为数据模型名称。
上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。
另外,本申请实施例中还提供一种电子设备,结构示意图如图3所示,包括存储器401、处理器402及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述序列数据的目标定位方法的步骤。
此外,本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述序列数据的目标定位方法的步骤。
综上,本发明的有益效果是,通过数据模型权限字段关联维表的方式,实现通用的权限设置配置化操作,兼容各种业务场景,同时将权限过滤值自动填充至标准查询SQL语句。从而避免了开发维护通配符解析器、业务深度绑定、用户使用困难等问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种权限过滤方法,其特征在于,该方法包括:
对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库;
基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段;
通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值;
将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。
2.如权利要求1所述的方法,其特征在于,所述对数据模型进行权限设置,具体包括:
如果所述数据模型不关联维表,将数据模型中的第一字段标识为权限字段,所述第一字段为用户标识字段;
如果所述数据模型关联基础维表,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联基础维表中的基础维表字段,将基础维表中的用户标识字段标识为过滤字段;
如果所述数据模型关联普通维表,将数据模型中的第一字段标识为权限字段,并将所述第一字段关联第一普通维表的第一字段,将第n普通维表的第二字段关联基础维表中的基础维表字段,将基础维表中的用户标识字段标识为过滤字段,n为大于等于1的整数;当n>1时,n个普通维表之间两两依次关联,将前一普通维表的第二字段关联后一普通维表的第一字段。
3.如权利要求2所述的方法,其特征在于,通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值具体包括:
如果所述数据模型不关联维表,获取请求用户标识的值,将作为权限字段的用户标识字段名称与作为权限过滤值的用户标识值进行对应存储;
如果所述数据模型关联基础维表,获取请求用户标识的值,根据请求用户标识的值,确定数据模型权限过滤值;将数据模型权限字段名称和数据模型权限过滤值进行对应存储;
如果所述数据模型关联普通维表,获取请求用户标识的值,根据请求用户标识的值,确定第n普通维表权限过滤值;根据第n普通维表权限过滤值,确定第n-1普通维表权限过滤值;根据第n-1普通维表权限过滤值确定第n-2普通维表权限过滤值;以此类推,根据第一普通维表权限过滤值确定数据模型权限过滤值;将数据模型权限字段名称和数据模型权限过滤值进行对应存储。
4.如权利要求3所述的方法,其特征在于,将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中,具体包括:
将所述数据模型权限字段名称和权限过滤值拼装成过滤查询语句;
获取当前标准查询语句的过滤条件表达式,
如果过滤条件表达式为空,则将所拼装的过滤查询语句设置为过滤条件的值;
如果过滤条件表达式不为空,则将过滤条件表达式通过AND连接符连接所拼装的过滤查询语句。
5.如权利要求1所述的方法,其特征在于,所述数据模型为单张数据库表,或者多张数据库表关联的子查询,该方法进一步包括:
当所述数据模型为单张数据库表时,将具有权限设置的查询语句中的数据模型名称替换为其对应的数据库表名,且将表的别名设置为数据模型名称;
当所述数据模型为多张数据库表关联的子查询时,将具有权限设置的查询语句中的数据模型名称替换为子查询语句,且将子查询的别名设置为数据模型名称。
6.如权利要求1所述的方法,其特征在于,该方法进一步包括:对数据模型中的多个字段进行权限设置。
7.如权利要求6所述的方法,其特征在于,对数据模型中的多个字段进行权限设置具体包括:
将数据模型中的多个字段标识为权限字段,并分别对每个权限字段进行关联维表。
8.一种权限过滤装置,其特征在于,该装置包括:
权限设置模块,对数据模型进行权限设置后,将数据模型权限字段关联的维表名称、字段存储到数据库;
标准查询语句解析模块,基于当前数据模型生成标准查询语句,取出当前标准查询语句中的数据模型名称;通过当前数据模型的名称,从数据库查询当前数据模型的权限字段,以及关联的维表名称、字段;
权限过滤值解析模块,通过解析数据模型权限字段关联的维表及字段信息,得到数据模型权限字段对应的权限过滤值;
权限过滤值填充模块,将所述数据模型权限字段和权限过滤值填充在当前标准查询语句过滤条件中生成具有权限设置的查询语句。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~7任一项所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910515952.XA CN112084167A (zh) | 2019-06-14 | 2019-06-14 | 一种权限过滤方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910515952.XA CN112084167A (zh) | 2019-06-14 | 2019-06-14 | 一种权限过滤方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112084167A true CN112084167A (zh) | 2020-12-15 |
Family
ID=73733999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910515952.XA Pending CN112084167A (zh) | 2019-06-14 | 2019-06-14 | 一种权限过滤方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112084167A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157781A (zh) * | 2021-01-28 | 2021-07-23 | 绿瘦健康产业集团有限公司 | 一种数据可视化方法、装置、终端设备以及存储介质 |
CN113626425A (zh) * | 2021-07-01 | 2021-11-09 | 浪潮软件股份有限公司 | 一种通过业务系统管理自定义报表系统的方法 |
CN113626867A (zh) * | 2021-08-12 | 2021-11-09 | 深圳平安智汇企业信息管理有限公司 | 数据权限过滤方法、装置、计算机设备及存储介质 |
CN113760864A (zh) * | 2021-04-21 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据模型的生成方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080040320A1 (en) * | 2006-08-11 | 2008-02-14 | Dettinger Richard D | Method and system for filtering data |
US20080319969A1 (en) * | 2002-02-26 | 2008-12-25 | Dettinger Richard D | Query conditions having filtered fields within a data abstraction environment |
CN109284326A (zh) * | 2018-11-26 | 2019-01-29 | 北京中创碳投科技有限公司 | 一种数据库访问方法和装置 |
CN109446219A (zh) * | 2018-10-10 | 2019-03-08 | 新华三大数据技术有限公司 | 权限管理方法及装置 |
-
2019
- 2019-06-14 CN CN201910515952.XA patent/CN112084167A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080319969A1 (en) * | 2002-02-26 | 2008-12-25 | Dettinger Richard D | Query conditions having filtered fields within a data abstraction environment |
US20080040320A1 (en) * | 2006-08-11 | 2008-02-14 | Dettinger Richard D | Method and system for filtering data |
CN109446219A (zh) * | 2018-10-10 | 2019-03-08 | 新华三大数据技术有限公司 | 权限管理方法及装置 |
CN109284326A (zh) * | 2018-11-26 | 2019-01-29 | 北京中创碳投科技有限公司 | 一种数据库访问方法和装置 |
Non-Patent Citations (1)
Title |
---|
郇洪江;黎刚;陈媛;沈红军;: "基于XML技术与上层控制的农村地表水质数据交换模型研究", 安徽农业科学, no. 11, 10 April 2011 (2011-04-10) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157781A (zh) * | 2021-01-28 | 2021-07-23 | 绿瘦健康产业集团有限公司 | 一种数据可视化方法、装置、终端设备以及存储介质 |
CN113760864A (zh) * | 2021-04-21 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 数据模型的生成方法和装置 |
CN113626425A (zh) * | 2021-07-01 | 2021-11-09 | 浪潮软件股份有限公司 | 一种通过业务系统管理自定义报表系统的方法 |
CN113626867A (zh) * | 2021-08-12 | 2021-11-09 | 深圳平安智汇企业信息管理有限公司 | 数据权限过滤方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112084167A (zh) | 一种权限过滤方法、装置及存储介质 | |
CN112540923B (zh) | 接口参数校验与转换方法、装置、设备及存储介质 | |
CN107015804B (zh) | 一种通过配置api快速开发项目的方法及系统 | |
CN111061733B (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
CN112560100B (zh) | 数据脱敏方法及装置、计算机可读存储介质、电子设备 | |
CN107368503A (zh) | 基于Kettle的数据同步方法和系统 | |
CN107797823B (zh) | 业务规则管理方法、装置、存储介质和计算机设备 | |
CN113608955B (zh) | 一种日志记录方法、装置、设备及存储介质 | |
CN109800258A (zh) | 数据文件部署方法、装置、计算机设备及存储介质 | |
CN110109981B (zh) | 工作队列的信息展示方法、装置、计算机设备和存储介质 | |
US20100049694A1 (en) | Method and system for extending a relational schema | |
US8171045B2 (en) | Record based code structure | |
CN112579604A (zh) | 测试系统的造数方法、装置、设备及存储介质 | |
CN113901083A (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN116702181A (zh) | 基于Apache Calcite的数据脱敏方法、系统、设备及介质 | |
CN113688134B (zh) | 基于多维数据的可视化变量管理方法、系统及设备 | |
CN113468873A (zh) | Pl/sql语言的语法解析方法及装置 | |
CN108376082A (zh) | 一种引用库版本更新方法和系统 | |
CN110472127A (zh) | 一种数据查询方法及系统 | |
CN115756484A (zh) | 预编译目标代码仓库确定方法及装置、存储介质 | |
CN110209694A (zh) | 数据处理方法及装置 | |
CN113343036B (zh) | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 | |
CN112559339B (zh) | 一种基于数据模板引擎的自动化测试验证方法及其测试系统 | |
CN115757174A (zh) | 一种数据库的差异检测方法及装置 | |
CN112799638B (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 |