一种可扩展的数据权限规则控制方法技术

技术编号:19745970 阅读:29 留言:0更新日期:2018-12-12 04:52
本发明专利技术提供一种可扩展的数据权限规则控制方法,属于计算机请求资源访问技术领域,包括定义权限规则变量,明确规则变量类型,规则变量类型包括:上下文变量、SQL变量和程序集变量;根据规则变量类型,定义规则解析方法,上下文变量为系统上下文,SQL变量可以通过SQL直接获取业务数据,程序集变量需要继承虚拟类,通过程序实现业务数据的获取;对定义的权限规则和规则解析方法进行配置;分配时,直接权限对象加载规则变量,通过选择规则变量指定权限对象的资源访问范围;运行时,通过规则解析引擎解析数据分配结果,提供可以访问的资源范围。因此,本发明专利技术能够提供灵活的数据权限规则控制。

【技术实现步骤摘要】
一种可扩展的数据权限规则控制方法
本专利技术涉及计算机请求资源访问技术,尤其涉及一种可扩展的数据权限规则控制方法。
技术介绍
随着业务模块、业务规模的不断增加,对业务资源访问变得越来越复杂。不同的用户群体,可访问的业务资源不同,需要进行资源的数据权限控制。但是很多资源数据权限访问需求不可预见,不可预知,或者是对同一类业务资源的数据访问权限控制不同行业、不同的客户群体需求不同,需要提供不依赖于产品、不依赖行业的可扩展的数据访问控制方法。
技术实现思路
为了解决以上技术问题,本专利技术提出了一种可扩展的数据权限规则控制方法。能够做到对资源的数据权限访问权限进行扩展配置。本专利技术的技术方案是:包括如下步骤:S1:定义规则变量。规则变量包括变量名称、变量编号、变量类型、变量适用范围。变量类型包括上下文变量、SQL变量和程序集变量。S2:定义规则变量解析方法。基于S1定义的规则变量,定义业务规则的解析方法;S3:配置对应的配置文件。基于S1、S2定义的规则变量及规则变量解析方法,在服务器端配置文件中进行配置;S4:分配时,根据权限对象加载S3中配置的规则变量,通过选择规则变量指定权限对象的数据访问范围;S5:运行时,通过规则解析引擎解析数据分配结果,获取实际可访问的数据权限。S1所述包括:定义规则变量实体类,其实体类包含的属性为:名称(VariableName),编号(ValiableCode),类型(VariableType),适用范围(VariableScope)。S2所述包括:定义规则变量解析方法,规则变量分为三种类型:上下文变量(ContextVariable)、SQL变量(SQLVariable)和程序集变量(AssemblyVariable)。上下文变量,直接使用系统上下文会话中的变量,比如,当前用户(CurrentUser当前登录的用户)、我的组织(CurrentOrg当前登录用户所在的系统组织)。SQL变量,通过SQL解析确认当前变量值。比如,在复杂业务系统中,存在多种业务,多种业务组织,其中,我的核算部门(MyCostDepartment当前登录的用户对应的核算人员所在的核算部门),我的行政部门(MyHRDepartment当前登录用户对应的行政人员所在的行政部门),这些变量可以通过SQL的方式查找并返回数据。SQL变量解析方法中,可以直接使用上下文变量。程序集变量,通过程序集的方式获取当前变量值。当上下文变量和SQL变量都无法解析一种规则变量时,需要通过程序集的方式进行解析。程序集解析需要统一继承抽象类AbstractAuthorizationRuleVariableParser,实现抽象方法VariableParser(AuthorizationVariableContextrule),该抽象方法返回值为string类型,表示变量解析值。S3所述包括:配置对应的配置文件,首先,定义配置节<AuthorizationRuelVariable>,在节点AuthorizationRuelVariable下上定义针对S1中的三种变量类型定义三个配置节上下文变量<ContextVariable>、SQL变量<SQLVariable>、程序集变量<AssemblyVariable>,在这三个配置节下分别定义变量集合。根据每种变量类型的特性,定义变量类型属性。上下文变量配置节包含属性:变量名称、变量编号、适用范围、上下文变量;SQL变量节包含属性:变量名称、变量编号、适用范围、解析SQL;程序集变量配置节<AssemblyVariable>包含属性:变量名称、变量编号、适用范围、程序集名、类名。S4所述包括:分配时,读取S3中配置文件中的规则配置节<AuthorizationRuelVariable>,根据权限对象的模块以及规则变量的适用范围,来加载规则变量,通过选择规则变量指定权限对象的数据访问范围。S5所述包括:运行时,规则解析引擎根据S4分配的数据权限规则变量,在规则配置节<AuthorizationRuelVariable>中找到规则变量的解析方法,根据解析方法获取实际可访问的数据权限。上下文变量<ContextVariable>,直接节点属性“上下文变量”,可以直接使用上下文类进行访问;SQL变量<SQLVariable>直接返回节点属性“解析SQL”,程序集变量<AssemblyVariable>通过反射程序集和类,运行S2中的方法VariableParser(AuthorizationVariableContextrule)获取返回值。附图说明图1是本专利技术的流程示意图。具体实施方式下面对本专利技术的内容进行更加详细的阐述:本专利技术的一种可扩展的数据权限规则控制方法,主要包括如下步骤:步骤1:定义规则变量。规则变量包括变量名称、变量编号、变量类型、变量适用范围。变量类型包括上下文变量、SQL变量和程序集变量。publicstringVariableName{Get;Set;}publicstringVariableCode{Get;Set;}publicVariableTypeVariableType{Get;Set;}publicstringVariableScope{Get;Set;}VariableType为变量类型,包括:ContextVariable,SQLVariable,AssemblyVariable步骤2:定义规则变量解析方法。基于步骤1定义的规则变量,定义业务规则的解析方法;(1)上下文变量,直接使用系统上下文会话中的变量,不需要单独解析。比如,当前用户(CurrentUser当前登录的用户)、我的组织(CurrentOrg当前登录用户所在的系统组织)。(2)SQL变量,通过SQL解析确认当前变量值。SQL变量解析方法中,可以直接使用上下文变量。比如我的核算部门(MyCostDepartment当前登录的用户对应的核算人员所在的核算部门)。selectdepartIDfromUserCostDepartmentwhereuserID={CurrentUser}CurrentUser为上下文变量,使用大括号进行标注其变量类型。(3)程序集变量,通过程序集的方式获取当前变量值。程序集解析需要统一继承抽象类AbstractAuthorizationRuleVariableParser,实现抽象方法步骤3:配置对应的配置文件。基于步骤1、步骤2定义的规则变量及规则变量解析方法,在服务器端配置文件中进行配置;步骤4:分配时,根据权限对象加载步骤3中配置的规则变量,通过选择规则变量指定权限对象的数据访问范围;步骤5:运行时,通过规则解析引擎解析数据分配结果,获取实际可访问的数据权限。本文档来自技高网...

【技术保护点】
1.一种可扩展的数据权限规则控制方法,其特征在于,包括:定义权限规则变量,明确规则变量类型,规则变量类型包括:上下文变量、SQL变量和程序集变量;根据规则变量类型,定义规则解析方法,上下文变量为系统上下文,SQL变量通过SQL直接获取业务数据,程序集变量需要继承虚拟类,通过程序实现业务数据的获取;对定义的权限规则和规则解析方法进行配置;分配时,直接权限对象加载规则变量,通过选择规则变量指定权限对象的资源访问范围;运行时,通过规则解析引擎解析数据分配结果,提供可以访问的资源范围。

【技术特征摘要】
1.一种可扩展的数据权限规则控制方法,其特征在于,包括:定义权限规则变量,明确规则变量类型,规则变量类型包括:上下文变量、SQL变量和程序集变量;根据规则变量类型,定义规则解析方法,上下文变量为系统上下文,SQL变量通过SQL直接获取业务数据,程序集变量需要继承虚拟类,通过程序实现业务数据的获取;对定义的权限规则和规则解析方法进行配置;分配时,直接权限对象加载规则变量,通过选择规则变量指定权限对象的资源访问范围;运行时,通过规则解析引擎解析数据分配结果,提供可以访问的资源范围。2.根据权利要求1所述的方法,其特征在于,具体步骤如下:S1:定义规则变量:规则变量包括变量名称、变量编号、变量类型、变量适用范围;变量类型包括上下文变量、SQL变量和程序集变量;S2:定义规则变量解析方法:基于S1定义的规则变量,定义业务规则的解析方法;S3:配置对应的配置文件:基于S1、S2定义的规则变量及规则变量解析方法,在服务器端配置文件中进行配置;S4:分配时,根据权限对象加载步骤三中配置的规则变量,通过选择规则变量指定权限对象的数据访问范围;S5:运行时,通过规则解析引擎解析数据分配结果,获取实际可访问的数据权限。3.根据权利要求2所述的方法,其特征在于,上下文变量,直接使用系统上下文会话中的变量;SQL变量,通过SQL解析确认当前变量值;程序集变量,通过程序集的方式获取当前...

【专利技术属性】
技术研发人员:李丽周祥国彭晓迪邵珠强
申请(专利权)人:山东浪潮通软信息科技有限公司
类型:发明
国别省市:山东,37

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

1