一种基于rbac模型扩展的数据权限控制方法和系统的制作方法

文档序号:6385108阅读:252来源:国知局
专利名称:一种基于rbac模型扩展的数据权限控制方法和系统的制作方法
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于RBAC模型扩展的数据权限控 制方法和系统。
背景技术
企业应用系统建设都涉及权限管理一种是功能操作权限,一种是数据操作权限。 其中,功能权限可以理解为能做什么的问题,如增加销售订单。数据权限可以理解为能 在哪里干什么的问题,如察看北京分公司海淀销售部张三的销售订单。
对于权限控制,现在基本上均基于RBAC (ROLE-BASED ACCESSC0NTR0L,基于角色访 问控制)模型构建权限控制系统。参照图1,其为RBAC的核心模型。在RBAC中,权限与角 色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限 的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被 指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。
现有技术中,基于RBAC模型的权限控制系统已经实现功能操作方面的权限控制, 而对于数据操作权限没有控制或者采用硬编码方式,局限性比较大,灵活度不够。比如对于 电信行业、广电行业等行业的运营商的在对客户资料信息、敏感的财务数据等信息的数据 权限访问控制方面,运营商已经不仅仅局限于功能操作权限的访问控制,更多的数据权限 的访问控制。
如,现有技术中,由于针对一资源的数据权限是根据具体的业务定制的,即由业 务人员确定哪些用户对应哪些角色,这些角色拥有哪些数据权限,然后业务人员将其针对 所述资源的上述需求告诉开发人员进行编码,开发人员即根据需求在针对所述资源的访问 类中,将验证逻辑及需求的属性硬编码在该类中,那么该种思路及操作过程,针对所述资源 的业务类型变更,则需要业务人员提供数据权限的需求关系给开发人员重新进行编码,导 致代码冗余量大,并且系统局限也比较大,不能灵活的适应各种不断变化的业务需求。发明内容
本发明所要解决的技术问题是提供一种基于RBAC模型扩展的数据权限控制方法 和系统,解决现有技术中在原系统架构情况下,变更数据权限时代码冗余量大,并且数据权 限控制不灵活,系统局限也比较大,不能灵活的适应各种不断变化的业务需求的问题。
为了解决上述问题,本发明公开了一种基于RBAC模型扩展的数据权限控制方法, 包括
配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配 置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求;
基于上述配置,数据权限的控制过程包括
当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应 的切面类拦截所述访问请求;
所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值 给资源类的第一对象;
所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
优选的,所述切面类根据所述资对应的属性信息,提取用户对象的属性信息赋值 给资源类的第一对象包括
所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION 中是否存在所述属性信息;
如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对 象;
如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述 需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属 性信息赋值给资源类的对象。
优选的,所述配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所 述资源类的访问请求包括
在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切 面类用于拦截访问所述资源类的访问请求;
和/ 或,
采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截 访问所述资源类的访问请求。
优选的,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果 集包括
所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执 行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件 并进行查询。
优选的,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL 语句时还包括
将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进 行标记;
进一步的,所述执行并生成所述用户对象的数据结果集之后还包括
当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据 属于所述用户对象的数据权限获得的;如果是,则生成所述用户对象没有相应权限的提示 信息返回给所述用户对象所在终端。
相应的,本发明还公开了一种基于RBAC模型扩展的数据权限控制系统,包括
配置模块,用于配置用户对象与各属性之间的对应关系,各属性与各资源类之间 的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类 的访问请求;
拦截模块,用于当一登录系统的用户对象发送访问请求以请求访问一资源类时, 通过资源类对应的切面类拦截所述访问请求;
赋值模块,用于所述切面类根据所述资源类对应需求的属性信息,提取用户对象 的属性信息赋值给资源类的第一对象;
数据获取模块,用于所述资源类根据所述第一对象中的属性信息,从数据库中获 取数据结果集。
优选的,所述赋值模块包括
判断模块,用于所述切面类根据所述资源类对应需求的属性信息,判断对应用户 对象的SESSION中是否存在所述属性信息;
第一赋值模块,用于如果存在,则从所述SESSION中提取用户对象的属性信息赋 值给资源类的第一对象;
第二赋值模块,用于如果不存在或者不全部存在,则从对应所述用户对象的属性 信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION 中将所述需求的属性信息赋值给资源类的对象。
优选的,所述配置模块包括
第一配置模块,用于在SPRING框架的XML配置文件中定义各资源类与相应切面类 的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/ 或,
第二配置模块,用于采用数据库表结构建立各资源类与相应切面类的对应关系, 所述切面类用于拦截访问所述资源类的访问请求。
优选的,所述数据获取模块包括
第一数据获取模块,用于所述资源类获取所述对象中的各属性信息,传入所述资 源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根 据属性信息确定查询条件并进行查询。
优选的,在所述数据获取模块还包括
标记模块,用于将所述第一对象中的属性信息,对当前属于用户对象的数据权限 的各属性信息进行标记;
进一步的,所述数据获取模块之后还包括
第一返回模块,用于当所述数据结果集不为空时,直接将数据结果集返回给所述 用户对象所在终端;
第二返回模块,用于当所述数据结果集为空时,则根据各属性信息的标记,判断数 据结果集是否根据属于所述用户对象的数据权限获得的;如果是则生成所述用户对象没有 相应权限的提示信息返回给所述用户对象所在终端。
与现有技术相比,本发明包括以下优点
本发明将采用开源SPRING框架的AOP面向切面编程,将执行具体业务逻辑设置 于资源类,将进行数据鉴权的逻辑设置于切面类,将业务逻辑与数据权限鉴权进行分离、解 耦,在资源的整体框架不变的情况下,针对资源的业务逻辑完全与对资源的数据权限相分 离,资源类无确切的、主动的知道需要获取何种属性信息,只需被动接收切面类传输的参数 即可完成整个过程,因此,代码冗余量低,节省存储空间;另外,业务人员只需要关系其业务 中各用户角色的数据权限,而不用需求技术人员根据业务人员的需求重新改编代码,提高 了系统针对数据权限控制的灵活性,扩展性强。


图1是RBAC基本模型示意图2是本发明一种基于RBAC模型扩展的数据权限控制方法的流程示意图3是本发明的一种基于RBAC模型扩展后的系统模型示意图4是本发明一种基于RBAC模型扩展的数据权限控制系统的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。
参照图2,示出了本发明一种基于RBAC模型扩展的数据权限控制方法,具体可以 包括
步骤100,配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应 关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问 请求。
为了更清楚的说明本发明的应用环境,在此首先介绍本发明基于图1的RBAC模型 扩展后的模型结构,参照图3,基于RBAC模型扩展后的模型结构示意图
其中对于本模型来说
1、本模型包含了 RBAC模型中的核心模型RBACO、角色间继承RBACl模型、责任分离 关RBAC2模型;
2、基于RBAC模型进行扩展,增加了数据权限约束配置,主要包括资源属性、资源 操作条件、ACTOR属性等信息;
3、RBACO区域中的针对ACTOR进行扩展,将员工、组织机构、岗位、虚拟团队、系统 都作为ACTOR。
对于图中各个实体,具体为
1、资源规格实体定义资源种类,包括业务数据、共享服务等;
2、资源实例实体指的是资源规格的实例化;例如业务数据实例化客户视图查 询、客户资料管理等,共享服务实例化客户积分查询、客户缴费查询等;
3、资源属性实体定义某个资源实例的属性信息,并建立资源属性与ACTOR属性 的对应关系;例如登陆的员工编码、所属分公司等;
4、操作定义操作的基础数据,例如查询、修改、删除等;
5、资源操作定义资源的各种可控制的操作信息;例如客户资料查询、客户资料 修改、客户资料删除等;
6、资源操作条件定义资源操作的约束条件信息;例如客户经理只能查询其名 下的客户信息、修改其名下的客户资料信息等;
7、角色定义人、系统在信息化应用软件系统中扮演的角色;例如系统管理员、客户经理等
8、角色继承描述A、B两个角色的继承关系,如果A继承B角色,则A角色享受B 角色的所有权限;
9、角色继承约束描述A角色继承B角色享受B角色的权限同时,进行一些权限的 约束限制;
10、ACTOR :定义数据权限的作用对象,包括用户、员工、组织机构、虚拟团队、系统 等;
1UACT0R属性定义ACTOR的属性信息;例如登陆系统的ACTOR所属本地网、服务 区、营维中心等;
12、ACTOR特权描述除授予ACTOR角色权限范围之外的一些特殊权限;
13、ACTOR约束描述授予ACTOR的一些约束权限,包括约束限制授予ACTOR角色 的部分权限。
其中,对于权限配置实现思路为
1、建立资源规格维护资源规格对应的业务实体等信息;
2、配置资源操作针对每一种资源规格配置其资源实例,配置资源操作信息,定义 数据操作信息;
3、配置资源属性设置资源的属性、属性限制条件;通过属性限制条件设置,建立 资源属性与登录系统的ACTOR属性的关系实现数据权限访问控制;
4、配置资源操作条件设置访问资源操作限制条件,限制条件为资源属性的子 集;
5、创建角色建立角色信息;
6、角色授权给予角色分配对应的资源的据操作权限,此处要求,针对某一个资 源,首先分配的功能操作权限,其次基于已分配的功能操作权限再分配其数据权限;
7、ACTOR分配角色针对具体的ACTOR分配对应的角色;
8、ACTOR授权针对具体的ACTOR直接分配其角色外资源访问的特权与约束;
9、ACTOR属性配置配置ACTOR属性信息,该属性与属性限制条件存在内在的关 系,且是其子集;
10、角色继承配置包括配置角色继承关系、角色继承约束汸角色继承B角色后,A 角色也享受B角色所有的权限;角色继承约束,主要是针对A角色的一些约束限制,约束其 只能享有B角色的部分权限。
在步骤100中,所述用户对象即为前述ACT0R,如前所述配置资源属性设置资源 的属性、属性限制条件;通过属性限制条件设置,建立资源属性与登录系统的ACTOR属性的 关系实现数据权限访问控制;与ACTOR属性配置配置ACTOR属性信息,该属性与属性限制 条件存在内在的关系,且是其子集;即配置用户对象与各属性之间的对应关系,各属性与各 资源类之间的对应关系。
比如“客户视图”资源类,需要员工编码、员工所属分公司编码、员工职位编码、特 殊权限标识等等。对于可访问客户视图的一用户对象(ACTOR),可设置其属性信息与其员工 编码、员工所属分公司编码、员工职位编码对应。在本实施例中配置用户对象与各属性之间 的对应关系,各属性与各资源类之间的对应关系可由具体设计数据权限的业务人员进行配置。
其中,配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源 类的访问请求,可采用开源SPRING框架的AOP面向切面编程,将业务逻辑与数据权限鉴权进行分离、解耦,本方法以数据权限鉴权作为横切面,实现数据权限的访问控制。其中,资源类为实现业务系统具体的业务逻辑,无需通过set语句将所需的Actor属性值信息Set到对应的对象中;切面类可以理解为,负责完成从Session中将ACTOR的属性信息Set到对应的资源属性实体表中配置的对应的VO (value object,值对象)等对象中。该配置可由技术人员进行配置。
所述配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求包括
步骤S101,在spring框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
WEB服务器配置Spring (Spring也表示是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的)Α0Ρ的拦截器;最后在Spring的XML的Extensible Markup Language,可扩展标记语言)配置文件中完成切面配置,即建立切面类与资源类的对应关系,定义当程序执行资源类之前要完成切面类的执行。
和/或,步骤S102,采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
可以采用数据库表结构方式,建立普通类与切面类的对应关系完成切面配置,即建立切面类与资源类的对应关系,定义当程序执行资源类之前要完成切面类的执行。
基于上述配置,数据权限的控制过程包括
步骤110,当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
在本发明实施中,对于用户以某一 id登陆后,系统会将其与actor (用户对象)对应,首先进行功能权限校验,比如actor具有查看“客户视图”的功能校验通过,那么在用户的显示界面可显示相应的功能界面和按钮,以接受用户进行后续的数据操作,比如查看具体数据等。
那么在本实施例中,假如“张三”是海口分公司客户经理,查询“客户视图”时,只能查询海口分公司、且其名下客户的客户资料等信息。那么用户以“张三”登陆系统时,系统首先将“张三”与对应的actor对应,然后验证具有查询“客户视图“的功能,么在用户的终端界面展现“客户视图”功能界面。
当用户访问“查询视图”的具体数据时,即访问“查询视图”资源类时,比如点击“查询视图”功能界面的查询按钮时,那么根据资源类与切面类的对应关系,系统调用所述切面类拦截所述访问请求。
步骤120,所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
切面类拦截了所述访问请求后,即提取访问请求的目的资源类对应需求的属性信息,也即资源类对应的属性信息,然后根据资源类需求的属性信息去提取actor的相应属性信息赋值给资源类的对象。
其中,所述切面类根据所述资对应的属性信息,提取用户对象的属性信息赋值给资源类的第一对象包括
步骤S121,所述 切面类根据所述资源类对应需求的属性信息,判断对应用户对象的session中是否存在所述属性信息;
在用户登陆时,服务器会针对用户对象维护一个session (会话)以进行通信。
比如“客户视图”资源类需要的属性包括员工编码,部门编码,职位编码。那么对 于前述“张三”对应的actor,本步骤首先去session中查询是否存在张三的员工编码、部门 编码、职位编码,如果没有,则进入步骤S123。如果有则进入步骤S122。从数据表中获取张 三的员工编码、部门编码、职位编码,比如员工编码1001、海口分部门编码4601、客户经理 编码CM46011001信息。
步骤S122,如果存在,贝U从所述session中提取用户对象的属性信息赋值给资源 类的第一对象;
如果存在,则获取张三的员工编码、部门编码、职位编码,比如员工编码1001、海 口分部门编码4601、客户经理编码CM46011001信息,然后将张三的员工编码1001、海口 分公司编码4601、客户经理编码CM46011001的值Set到客户视图的普通类中的VO对象 custViewMVO 对应的属性 staff Id、regionld、custManager 中。
本步骤session中存在相应属性信息可能是因为,张三本在次操作之前,可能访 问其他某个资源类,而该资源类第一次也用到上述信息,如果是第一次使用,则通过步骤 S123获取相应属性信息写入session。
步骤S123,如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中, 提取所述需求的属性信息中缺少的属性信息写入所述session中,再从session中将所述 需求的属性信息赋值给资源类的对象。
另外,当session信息中不存在资源类所需求的属性信息,或者session中缺少资 源类所需求的属性信息中的一个或者多个,那么则从对应所述用户对象的属性信息表中, 提取所述需求的属性信息中缺少的属性信息写入所述session中,再从session中将所述 需求的属性信息赋值给资源类的对象。
比如对于前述“张三”例子,如果缺少“客户视图”所述的全部属性信息,那么本步 骤从对应所述用户对象的属性信息表中提取张三的员工编码1001、海口分部门编码4601、 客户经理编码CM46011001信息写入session中,然后张三的员工编码1001、海口分公司编 码4601、客户经理编码CM46011001的值Set到客户视图的普通类中的VO对象custViewMVO 对应的属性 staff Id、regionld、custManager 中。
对于缺少部分资源类所需的属性信息,其操作过程类似,在此不加以限制。
步骤130,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
切面类将资源类所需的actor的属性信息赋值给资源类的对象后,则放弃拦截, 通知资源类执行其逻辑,根据所述对象中的属性信息,从数据库中获取数据结果集。
其中,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集 包括
步骤S130,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态 SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确 定查询条件并进行查询。
资源类的VO等对象获得属性信息后,则获取VO对象的属性值信息,传入普通类中的动态SQL语句中执行生成Actor的数据权限范围的数据结果集,比如将regionld = 4601 且custManager = CM46011001做为SQL语句的查询条件筛选出张三权限范围内的客户列表。
在本发明中,对于资源类的动态SQL语句查询获得的结果集,如果结果集不为空, 则可直接返回结果集给用户对象所在终端;如果结果集为空,则说明可能数据库存在对应 相应功能权限的数据,但是用户没有相应数据权限,或者数据库中对应相应功能权限根本 就没有数据,那么可提示用户对象所在终端“没有查询到相应的数据或者用户数据权限不 足”。
另外,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL 语句时还包括
步骤A130将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各 属性信息进行标记;
即标记所述动态SQL语句中的查询条件是否是对应用户对象的数据权限。
从数据库中获取数据结果集之后还包括
步骤A131,当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象 所在终端;
步骤A132,当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集 是否根据属于所述用户对象的数据权限获得的;如果是,则生成所述用户对象没有相应权 限的提示信息返回给所述用户对象所在终端。
在步骤A130至A132实施例中,资源类将相应切面类传入的参数(资源类需求的 actor的属性信息),作为查询数据库的查询条件进行搜索,那么对于数据库来说,其检索 结果可能因为是数据库中根本不存在相应功能权限的数据而导致得到空集,或者是因为数 据库中存在相应功能权限的数据但是该用户对象没有数据权限而导致的空集,为了使用户 明确知道其是没有相应数据权限,那么当检索结果为空集时,则可根据各属性信息的标记, 判断数据结果集是否根据属于所述用户对象的数据权限获得,如果是可返回当前用户对象 没有相应数据权限的提示信息给用户对象所在终端,如果不是则可返回当前不存在实际数 据内容的提示给用户对象所在终端;避免使用者认为服务器没响应,而一直重复发送请求, 导致服务器资源浪费。
本发明将采用开源Spring框架的AOP面向切面编程,将执行具体业务逻辑设置 于资源类,将进行数据鉴权的逻辑设置于切面类,将业务逻辑与数据权限鉴权进行分离、解 耦,在资源的整体框架不变的情况下,针对资源的业务逻辑完全与对资源的数据权限相分 离,资源类无确切的、主动的知道需要获取何种属性信息,只需被动接收切面类传输的参数 即可完成整个过程,因此,代码冗余量低,节省存储空间;另外,业务人员只需要关系其业务 中各用户角色的数据权限,而不用需求技术人员根据业务人员的需求重新改编代码,提高 了系统针对数据权限控制的灵活性,扩展性强。
参照图4,其示出了本发明一种基于RBAC模型扩展的数据权限控制系统,包括
配置模块200,用于配置用户对象与各属性之间的对应关系,各属性与各资源类之 间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源 类的访问请求;
拦截模块210,用于当一登录系统的用户对象发送访问请求以请求访问一资源类 时,通过资源类对应的切面类拦截所述访问请求;
赋值模块220,用于所述切面类根据所述资源类对应需求的属性信息,提取用户对 象的属性信息赋值给资源类的第一对象;
数据获取模块230,用于所述资源类根据所述第一对象中的属性信息,从数据库中 获取数据结果集。
其中,所述赋值模块包括
判断模块,用于所述切面类根据所述资源类对应需求的属性信息,判断对应用户 对象的session中是否存在所述属性信息;
第一赋值模块,用于如果存在,贝1J从所述session中提取用户对象的属性信息赋 值给资源类的第一对象;
第二赋值模块,用于如果不存在或者不全部存在,则从对应所述用户对象的属性 信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION 中将所述需求的属性信息赋值给资源类的对象。
其中,所述配置模块包括
第一配置模块,用于在spring框架的XML配置文件中定义各资源类与相应切面类 的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/或,第二配置模块,用于采用数据库表结构建立各资源类与相应切面类的对 应关系,所述切面类用于拦截访问所述资源类的访问请求。
其中,所述数据获取模块包括
第一数据获取模块,用于所述资源类获取所述对象中的各属性信息,传入所述资 源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根 据属性信息确定查询条件并进行查询。
在所述数据获取模块还包括
标记模块,用于将所述第一对象中的属性信息,对当前属于用户对象的数据权限 的各属性信息进行标记;
进一步的,所述数据获取模块之后还包括
第一返回模块,用于当所述数据结果集不为空时,直接将数据结果集返回给所述 用户对象所在终端;
第二返回模块,用于当所述数据结果集为空时,则根据各属性信息的标记,判断数 据结果集是否根据属于所述用户对象的数据权限获得的;如果是则生成所述用户对象没有 相应权限的提示信息返回给所述用户对象所在终端。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为 依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知 悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明 所必须的。
对于系统或系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简 单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与 其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务 器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、网络 PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序 模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组 件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由 通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以 位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作 之间存在任何这种实际的关系或者顺序。
以上对本发明所提供的一种基于RBAC模型扩展的数据权限控制方法和系统,进 行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施 例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人 员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明 书内容不应理解为对本发明的限制。
权利要求
1.一种基于RBAC模型扩展的数据权限控制方法,其特征在于,包括 配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求; 基于上述配置,数据权限的控制过程包括 当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求; 所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象; 所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
2.根据权利要求1所述的方法,其特征在于,所述切面类根据所述资对应的属性信息,提取用户对象的属性信息赋值给资源类的第一对象包括 所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION中是否存在所述属性信息; 如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对象;如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
3.根据权利要求1所述的方法,其特征在于,所述配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求包括 在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求; 和/或,采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
4.根据权利要求1所述的方法,其特征在于,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集包括 所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
5.根据权利要求4所述的方法,其特征在于,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句时还包括 将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记; 进一步的,所述执行并生成所述用户对象的数据结果集之后还包括 当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端; 当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是,则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
6.一种基于RBAC模型扩展的数据权限控制系统,其特征在于,包括 配置模块,用于配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求; 拦截模块,用于当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求; 赋值模块,用于所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象; 数据获取模块,用于所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
7.根据权利要求6所述的系统,其特征在于,所述赋值模块包括 判断模块,用于所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION中是否存在所述属性信息; 第一赋值模块,用于如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对象; 第二赋值模块,用于如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
8.根据权利要求6所述的系统,其特征在于,所述配置模块包括 第一配置模块,用于在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求; 和/或,第二配置模块,用于采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
9.根据权利要求6所述的系统,其特征在于,所述数据获取模块包括 第一数据获取模块,用于所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
10.根据权利要求9所述的系统,其特征在于,在所述数据获取模块还包括 标记模块,用于将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记; 进一步的,所述数据获取模块之后还包括 第一返回模块,用于当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端; 第二返回模块,用于当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
全文摘要
本发明提供了基于RBAC模型扩展的数据权限控制方法和系统,涉及计算机技术领域。所述方法包括配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,基于上述配置,数据权限的控制过程包括当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;所述资源类根据所述第一对象中的属性信息从数据库中获取数据结果集。本发明针对资源的业务逻辑完全与对数据权限相分离,提高了系统针对数据权限控制的灵活性,扩展性强,且代码冗余量低,节省空间。
文档编号G06F21/30GK103049684SQ20121056336
公开日2013年4月17日 申请日期2012年12月21日 优先权日2012年12月21日
发明者赵雨佳, 王强, 赵守来 申请人:大唐软件技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1