一种信息访问权限控制方法

文档序号:6497208阅读:193来源:国知局
专利名称:一种信息访问权限控制方法
技术领域
本发明涉及一种信息访问权限控制方法,是一种对任意一个表的任意一条或一批 记录进行权限控制的方法,主要应用于信息管理系统,增强对操作员权限控制的灵活性,从 而达到信息安全的目的,是对信息管理系统权限控制的补充。
背景技术
二十一世纪是信息技术的时代,飞速发展的计算机技术早已进入企业管理领域, 辅助管理企业的生产资料、生产计划,甚至为企业发展战略的决策提给重要的参考依据。计 算机辅助企业管理使得各种中小企业的日益壮大,逐渐发展成为大型企业甚至超大型企 业。为了保持企业的高速发展,人们对管理水平提出了更高更全面的要求,而信息安全方面 则显得尤为重要。目前对权限控制常用的方法主要有功能权限和内容权限两种。功能权限的实现比较简单,目前的大多数管理系统在对功能点的控制或者是基于 角色的管理上都有较灵活的实现方法。可以采用加法的原则和使用角色的组合来应对企业 客户提出的复杂的功能权限要求。比如公司的业务员属于录入员这个角色,负责基础信息 的录入,但是无法查看公司的重要报表;而公司领导属于决策者的这个角色,就被允许查看 重要报表。这种对功能是否可用的权限控制方法是本技术领域中使用比较普遍的方法,我 们通常称它为功能权限。内容权限解决的是相同功能点下不同用户所看到的数据内容是不同的,它是数据 的一种隔离。比如有三个操作员ABC同样都具有信息录入的权限,但是A和B只能看到自 己录入的信息,而C做为B的领导,他除了能看到自己的信息以外,还能看到他的下属B录 入的信息。内容权限要相对复杂很多,所以很难做到让用户可以根据自己的需求灵活自定 义。企业都有着不同的管理系统,因此如果没有能灵活自定义的内容权限的过滤方法,就只 能依赖于软件厂商的二次开发,这将给管理系统的实施带来巨大的成本。所以如果能有一 种实现内容权限自定义的方法,它将是管理系统中内容权限控制的一个重要补充。

发明内容
本发明主要是解决现有技术所存在的技术问题,提供了一种信息访问权限控制方法。本发明的上述技术问题主要是通过下述技术方案得以解决的一种信息访问权限 控制方法,其特征在于所述控制方法包括下述步骤⑴注册内容权限的表对象;⑵设置内 容权限的过滤规则并将该过滤规则保存至数据库中;⑶将上述过滤规则赋给需要上述内容 权限的用户;⑷相关业务点中的程序根据注册的表对象和用户输入的过滤规则对数据进行 过滤并反馈给用户,即分析前面三步确定的三个必要条件,将前面三个条件转化成SQL语 句,并与传入的SQL语句进行合并,使其成为一个新的SQL语句,本算法其实就是对业务层 代码的一种“劫持”,实现非常简单而且对程序代码具有极少的侵入性,可以在不影响程序员正常的开发流程的情况下将权限过滤应用到业务中。作为优选,所述步骤⑴中,内容权限的注册在信息管理系统发布前就事先注册到 预置的数据库中,在相应模块需要过滤的地方开启内容权限过滤开关,程序会根据此开关 的启闭来决定是否启用内容权限的过滤算法。作为优选,所述步骤⑵中,需要保存用户输入的信息包括参考规则的基础数据id、 运算符、规则定义数据、逻辑运算符。作为优选,所述步骤⑶中,权限管理员根据需要通过步骤⑵配置不同的内容权限 过滤规则,然后将这些规则分配给相应的操作员或角色。作为优选,所述步骤⑷具体为
第一步,分析SQL语句是否是由UNION或UNION ALL组合的语句,如果是将UNION的各 个并列的SQL子句一一分开,并保存到一个数组中,后期处理时将分别对这些子句一一做 处理;如果不包含UNION,则直接返回SQL语句本身;
第二步,对步骤一中的SQL子句做进一步分解,利用关键字FROM、WHERE、GROUP、 HAVING、0RDER将SQL语句分解成多个部分,并从中解析出表名、初始过滤条件信息;如果语 句中包含JOIN相关信息,则利用JOIN和ON所在的位置,进一步解析出关联表的名称,分解 出SQL子句的各个组成部分的内容,后面的步骤中需要用到此步骤分析出的各个部分;
第三步,根据步骤二中求得的表名、系统当前登陆的用户名以及当前登陆的组织信息, 去权限过滤规则表中查询与当前用户当前表相关的过滤规则,对规则中的动态变量用实际 的参数进行替换如果查询出来的过滤规则为一项则直接返回该规则,如果过滤规则多于 一项则以多个规则交集的形式返回一个字符串;
第四步,将步骤二中分解出来的初始过滤条件和步骤三中从规则数据库里获取的规则 条件进行组合,形成一个新的过滤条件,组合格式为“初始过滤条件” AND “过滤规则”;
第五步,根据步骤二中分解的SQL子句的各个组成部分的内容,将步骤四中新产生的 过滤条件插入的原始SQL语句中成为一个新的SQL语句即使用步骤四中的新的过滤条件 替换步骤二中的初始过滤条件,然后重新将步骤二中SQL子句的各个组成部分的内容组合 成一个完整的SQL子句;
第六步,如果步骤一中分解出来的子句多于一个,则跳转到步骤二开始处理下一个SQL 子句,直到所有SQL子句都处理完,再跳转到步骤七;
第七步,将步骤六中所有的处理完的SQL子句重新使用UNION或UNION ALL连接成一 个完整的SQL语句,并返回这个新的SQL语句。本发明是管理系统中内容权限控制的一个重要补充,避免了原本需要进行二次开 发的工作,大大降低了实施成本,又能满足客户的自定义内容权限控制的需求。
具体实施例方式下面通过实施例,对本发明的技术方案作进一步具体的说明。实施例本发明包括下述步骤⑴注册内容权限的表对象;⑵设置内容权限的过 滤规则并将该过滤规则保存至数据库中;⑶将上述过滤规则赋给需要上述内容权限的用 户;⑷相关业务点中的程序根据注册的表对象和用户输入的过滤规则对数据进行过滤并反 馈给用户,即分析前面三步确定的三个必要条件,将前面三个条件转化成SQL语句,并与传
4入的SQL语句进行合并,使其成为一个新的SQL语句,本算法其实就是对业务层代码的一种 “劫持”,实现非常简单而且对程序代码具有极少的侵入性,可以在不影响程序员正常的开 发流程的情况下将权限过滤应用到业务中。其中步骤⑴中,内容权限的注册在信息管理系统发布前就事先注册到预置的数据 库中,在相应模块需要过滤的地方开启内容权限过滤开关,程序会根据此开关的启闭来决 定是否启用内容权限的过滤算法。步骤⑵中,需要保存用户输入的信息包括参考规则的基础数据id、运算符、规则定 义数据、逻辑运算符。步骤⑶中,权限管理员根据需要通过步骤⑵配置不同的内容权限过滤规则,然后 将这些规则分配给相应的操作员或角色。步骤⑷具体为
第一步,分析SQL语句是否是由UNION或UNION ALL组合的语句,如果是将UNION的各 个并列的SQL子句一一分开,并保存到一个数组中,后期处理时将分别对这些子句一一做 处理;如果不包含UNION,则直接返回SQL语句本身;
第二步,对步骤一中的SQL子句做进一步分解,利用关键字FROM、WHERE、GROUP、 HAVING、0RDER将SQL语句分解成多个部分,并从中解析出表名、初始过滤条件信息;如果语 句中包含JOIN相关信息,则利用JOIN和0N所在的位置,进一步解析出关联表的名称,分解 出SQL子句的各个组成部分的内容,后面的步骤中需要用到此步骤分析出的各个部分;
第三步,根据步骤二中求得的表名、系统当前登陆的用户名以及当前登陆的组织信息, 去权限过滤规则表中查询与当前用户当前表相关的过滤规则,对规则中的动态变量用实际 的参数进行替换如果查询出来的过滤规则为一项则直接返回该规则,如果过滤规则多于 一项则以多个规则交集的形式返回一个字符串;
第四步,将步骤二中分解出来的初始过滤条件和步骤三中从规则数据库里获取的规则 条件进行组合,形成一个新的过滤条件,组合格式为“初始过滤条件” AND “过滤规则”;
第五步,根据步骤二中分解的SQL子句的各个组成部分的内容,将步骤四中新产生的 过滤条件插入的原始SQL语句中成为一个新的SQL语句即使用步骤四中的新的过滤条件 替换步骤二中的初始过滤条件,然后重新将步骤二中SQL子句的各个组成部分的内容组合 成一个完整的SQL子句;
第六步,如果步骤一中分解出来的子句多于一个,则跳转到步骤二开始处理下一个SQL 子句,直到所有SQL子句都处理完,再跳转到步骤七;
第七步,将步骤六中所有的处理完的SQL子句重新使用UNION或UNION ALL连接成一 个完整的SQL语句,并返回这个新的SQL语句。最后,应当指出,以上实施例仅是本发明较有代表性的例子。显然,本发明的技术 方案并不限于上述实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的 内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
权利要求
一种信息访问权限控制方法,其特征在于所述控制方法包括下述步骤⑴注册内容权限的表对象;⑵设置内容权限的过滤规则并将该过滤规则保存至数据库中;⑶将上述过滤规则赋给需要上述内容权限的用户;⑷相关业务点中的程序根据注册的表对象和用户输入的过滤规则对数据进行过滤并反馈给用户,即分析前面三步确定的三个必要条件,将前面三个条件转化成SQL语句,并与传入的SQL语句进行合并,使其成为一个新的SQL语句。
2.根据权利要求1所述的一种信息访问权限控制方法,其特征在于所述步骤⑴中,内 容权限的注册在信息管理系统发布前就事先注册到预置的数据库中,在相应模块需要过滤 的地方开启内容权限过滤开关,程序会根据此开关的启闭来决定是否启用内容权限的过滤 算法。
3.根据权利要求1所述的一种信息访问权限控制方法,其特征在于所述步骤⑵中,需 要保存用户输入的信息包括参考规则的基础数据id、运算符、规则定义数据、逻辑运算符。
4.根据权利要求1所述的一种信息访问权限控制方法,其特征在于所述步骤⑶中,权 限管理员根据需要通过步骤⑵配置不同的内容权限过滤规则,然后将这些规则分配给相应 的操作员或角色。
5.根据权利要求1所述的一种信息访问权限控制方法,其特征在于所述步骤⑷具体为第一步,分析SQL语句是否是由UNION或UNION ALL组合的语句,如果是将UNION的各 个并列的SQL子句一一分开,并保存到一个数组中,后期处理时将分别对这些子句一一做 处理;如果不包含UNION,则直接返回SQL语句本身;第二步,对步骤一中的SQL子句做进一步分解,利用关键字FROM、WHERE、GROUP、 HAVING、0RDER将SQL语句分解成多个部分,并从中解析出表名、初始过滤条件信息;如果语 句中包含JOIN相关信息,则利用JOIN和ON所在的位置,进一步解析出关联表的名称,分解 出SQL子句的各个组成部分的内容,后面的步骤中需要用到此步骤分析出的各个部分;第三步,根据步骤二中求得的表名、系统当前登陆的用户名以及当前登陆的组织信息, 去权限过滤规则表中查询与当前用户当前表相关的过滤规则,对规则中的动态变量用实际 的参数进行替换如果查询出来的过滤规则为一项则直接返回该规则,如果过滤规则多于 一项则以多个规则交集的形式返回一个字符串;第四步,将步骤二中分解出来的初始过滤条件和步骤三中从规则数据库里获取的规则 条件进行组合,形成一个新的过滤条件,组合格式为“初始过滤条件” AND “过滤规则”;第五步,根据步骤二中分解的SQL子句的各个组成部分的内容,将步骤四中新产生的 过滤条件插入的原始SQL语句中成为一个新的SQL语句即使用步骤四中的新的过滤条件 替换步骤二中的初始过滤条件,然后重新将步骤二中SQL子句的各个组成部分的内容组合 成一个完整的SQL子句;第六步,如果步骤一中分解出来的子句多于一个,则跳转到步骤二开始处理下一个SQL 子句,直到所有SQL子句都处理完,再跳转到步骤七;第七步,将步骤六中所有的处理完的SQL子句重新使用UNION或UNION ALL连接成一 个完整的SQL语句,并返回这个新的SQL语句。
全文摘要
本发明主要应用于信息管理系统,是一种对任意一个表的任意一条或一批记录进行权限控制的方法,增强对操作员权限控制的灵活性,从而达到信息安全的目的,是对信息管理系统权限控制的补充。其实现步骤为⑴注册内容权限的表对象;⑵设置内容权限的过滤规则并将该过滤规则保存至数据库中;⑶将上述过滤规则赋给需要上述内容权限的用户;⑷相关业务点中的程序根据注册的表对象和用户输入的过滤规则对数据进行过滤并反馈给用户,实现非常简单而且对程序代码具有极少的侵入性,可以在不影响程序员正常的开发流程的情况下将权限过滤应用到业务中。
文档编号G06F17/30GK101976316SQ20101052159
公开日2011年2月16日 申请日期2010年10月27日 优先权日2010年10月27日
发明者叶俊强, 李伯鸣 申请人:杭州新中大软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1