一种权限管理方法及系统的制作方法

文档序号:6610577阅读:249来源:国知局
专利名称:一种权限管理方法及系统的制作方法
技术领域
本发明涉及权限系统设计技术领域,更确切地说指一种对用户操:作权限进 行管理的方法及系统。
背景技术
在任何系统中,权限系统的设计是最基础的,经常被使用。权限管理是应
限。权限系统作为各种系统中都需要的一个子系统,具有很广的需求面,无论 做什么系统,权限系统对外部系统而言最好做到黑盒的效果,为了减少对外部 系统的侵入,在根据业务需求分析的基础上形成权限系统的输入和输出需求。
目前最常见的一种权限设计办法,以数据库的设计为中心,如图l所示,数 据库包括用户表、角色表、用户角色表、角色权限对照表和权限表,用户表包
括三个或以上字段,用以存放系统中各用户的ID(标识符)、用户名及对该用户 的描述,其它(如地址、电话等信息);角色表包括三个字段,用以存放系统中 所有角色的ID、角色名及对该角色的描述;用户角色表用以记录用户与角色之 间的对应关系, 一个用户可以隶属于多个角色, 一个角色组也可拥有多个用户, 包括三个字段,ID,角色ID,用户ID;角色(用户组)权限表用以将具体的许 可对象与能够操作它们的角色绑定,即保存特定的角色所分配的权限,包含ID、 角色ID以及权限ID;权限表记录需要控制的所有模块的权限资源,例如录入、 修改、删除、执行等操作,包含ID和权限名。
用户登录时,根据用户角色表将相应的用户与角色关联起来,再根据所属 于的角色从角色(用户组)权限表和权限表中读取对应权限,保存在緩存模块 Session中,进行鉴权时从Session中读取权限并判断,传统的应用程序通常是在 每个具体业务方法前加一个权限判断语句,如果用户具有权限,则让程序通过,但是这种传统的方案最大问题就是对原有系统产生非常大的侵入,在具体业务 里实现判断,判断代码和业务代码混合在一起,导致了原有系统与权限系统形 成了非常强的耦合。
为了避免跟业务代码的耦合问题,现有很多解决方案通过使用Filter 、 Interceptor以^AOP (Aspect Oriented Programming,面向方面编禾呈)鉴一又来尽 量保证不对原有系统的侵入,减少耦合性。
上述现有技术虽然使得权限与业务分离,然而,现有系统中所有业务模块 的权限控制资源统一存储在权限表中,各模块的权限资源仍然混合在一起,这 样造成系统伸缩性和扩展性不足,使用困难的问题依然存在。如果系统需增加 新的业务模块,要给新的业务模块在权限表中添加权限控制,这样所添加的新 权限资源数据跟原来数据耦合在一起,造成数据不清晰,资源之间的关系不能 很好地体现出来,并且加大了开发难度,对维护、修改等工作造成困难;另外, 如果系统要细致到每个操作界面的每个操作的权限控制,还是无法做到系统的 组件化,对于系统需要删减某个模块或者新增某个模块,无法做到插拔式的方 便。

发明内容
本发明的目的在于提供一种权限管理方法与系统,克服现有技术中所有业 务模块的权限控制资源统一存储在一起造成的系统扩展性和伸缩性不足的缺 点。
为了实现上述目的,本发明提供如下的技术方案
一种权限管理方法,用于在权限管理系统中对用户的操作请求进行校验, 所述方法包括
接收用户提出的操作请求;
从数据库中获取所述用户所属的角色所分配的权限标识符,所述数据库存 储用户、角色及角色所分配的权限标识符的对应关系;从系统中的各权限资源子文件中获取并緩存与所述权限标识符相对应的权 限资源,所述各权限资源子文件对应于系统中的各业务逻辑组件才莫块,所述权
限资源子文件存储其所对应的各业务逻辑组件才莫块的权限资源;
拦截用户的操作请求并判断所述用户所分配的权限资源是否包含所述操作
请求,是则接受所述操作请求,否则拒绝所述操作请求。
一种权限管理系统,所述系统包括权限校验模块、至少一个权限资源子文
件模块、数据库以及至少一个业务逻辑组件模块;
所述数据库用以存储用户、角色及角色所分配的权限标识符的关系列表; 所述业务逻辑组件模块,用以实现系统的各项业务逻辑功能; 所述各权限资源子文件模块对应于系统中的各业务逻辑组件模块,用以存 储其所对应的各业务逻辑组件模块的权限资源,所述各权限资源子文件模块中
存储的权限资源与所述数据库中的权限标识符相对应;
所述权限校验模块用以从所述数据库中获取用户所分配的权限标识符,根 据所述权限标识符查询所述各权限资源子文件模块,获取并存储用户所分配的 权限资源,拦截用户发送的对所述业务逻辑组件模块的操作请求,校验用户是 否具有所请求的权限。
由于采用了上述方案,本发明满足了系统要细致到每个操作界面的每个操 作的权限控制需求,实现了对业务模块权限资源后续开发、维护的便利,同时 也可实现用户根据需求对业务模块的灵活定制。


图l是现有权限系统中数据库的组成示意图; 图2是本发明所提供的系统实施例一的组成示意图; 图3是本发明所提供的系统实施例二的组成示意图; 图4是利用图2所提供系统实施例进行权限管理的方法实施例一的工作流 程图;图5是利用图3所提供系统实施例进行权限管理的方法实施例二的工作流 程图。
具体实施例方式
软件功能组件化设计,组件化开发是模块化软件开发中架构设计、开发、 测试与公用组件部署等各个环节的技术延伸,这些组件通过组装可以实现产品 的有效重用与扩展,减少系统运行粒度,提高运行效率,并易于软件分布式开 发和功能升级;在统一的系统组件注册表的维护下,可以很容易地按照客户需 求进行定制和开发新的组件,伸缩性强。
为实现本发明系统组件化的目的,本发明的实施例主要采用了 AOP鉴权与 资源模块细分结合的技术方案。
AOP,面向方面编程,是针对业务处理过程中的横切面进行提取,通过切 面,将系统中各个不同层次上的问题隔离开来,实现统一集约式处理,各切面 只需集中于自己领域内的逻辑实现。本发明中通过AOP技术把权P艮横向关注点 从业务逻辑模块中分离出来,实现了一个通用的权限校验模块,在这层切面上 进行统一的集中式权限管理,通过AOP技术, 一方面使得开发逻辑更加清晰, 专业化分工更加易于进行;另一方面,由于切面的隔离,降低了耦合性,为组 件化打好基础。
资源模块细分,即根据各个业务模块划分生成各自的权限资源文件,每个 业务模块对应一个权限资源文件,文件釆用如XML、 CSV、 INI、 TXT等类型文 件。该权限资源文件随着业务模块的存在而存在,如果系统需要添加新的业务 模块,那么针对该业务模块的权限控制需要新增一个权限资源文件,如果该业 务模块从系统中删除,那么对应的资源文件就应该移除,由此,不需要采用任 何代码即实现了权限系统的组件化。与组件化的系统相对应,各业务模块即可 称为业务组件。
下面参照附图对本发明的实施例进行详细地说明。基于上述实现本发明的基本技术手段,本发明实施例提供的权限管理系统 包括权限校验模块、权限资源文件模块、数据库以及业务逻辑组件模块,权限 校验模块用以拦截用户发送的对业务逻辑组件模块进行操作的请求,查询数据 库以及权限资源文件模块,获取并存储用户所分配的权限资源,校验用户是否
具有所请求的权限;权限资源文件模块包括至少一个权限资源子文件模块,用 以存储各个业务逻辑组件模块的权限资源文件;数据库存储用户、角色及权限 的关系列表;业务逻辑组件模块,用以实现产品的各项业务逻辑功能。
如图2所示,为本发明所^是供的系统实施例一的组成示意图,该系统包括 AOP权限校验模块2、数据库4、权限资源子文件模块61、 62、 63及业务逻辑 组建模块8。 AOP权限校验模块2包括用户权限緩存模块21和权限校验模块 22,用户权限緩存模块21可以从数据库4和权限资源子文件模块中读取数据, 获得用户所对应的权限并存储,本实施例中采用session;权限校验模块22用 以拦截用户向业务逻辑组件模块8发送的操作请求,从用户权限緩存模块21 中读取用户所对应的权限,对用户权限进行校验;数据库4存储有用户表、角 色表、用户角色表与角色权限表,用户表中存储用户ID与用户名的关联关系, 角色表中存储角色ID与角色名的关联关系,用户角色表将用户与角色关联起 来,角色权限表中存储各角色与其被分配的权限标识符的关联关系;权限资源 文件冲莫块61、 62、 63以文件的形式存储业务逻辑组件8的权限资源,每一个权 限资源子文件对应存储业务逻辑组件模块8中的一个业务逻辑组件的权限资 源,同时,权限资源文件才莫块6与数据库4中的角色权限表中的权限标识符保 持对应关系的关联,所述各权限资源子文件中存储的权限资源与权限标识符之 间的对应关系,所述权限标识符指示各权限资源子文件中存储的一种权限资源, 相应于图2所示的业务逻辑组件模块8包括三个子业务组件模块,本实施例中 权限资源文件模块6包括三个权限资源文件子文件。
如图3所示,为本发明所4是供的系统实施例二的组成示意图,该实施例与实 施例一不同之处在于,系统除包括AOP权限校验模块2、数据库权4、限资源模块6以及业务逻辑组件模块8外,还增加了一个权限资源緩存模块IO,该权限资 源緩存模块IO,用以保存权限资源信息,系统启动时,权限资源文件模块6中的 信息即被加载到该权限资源缓存模块10中,查询数据时,用户权限緩存模块21 不再直接从权限资源文件模块6中读取数据,而是从权限资源緩存模块10中读取 缓存在其中的权限资源数据;角色权限表也不再直接与权限资源文件模块6保持 双向互通,而是直接与权限资源緩存模块10保持连接,实时保持权限标识符与 权限资源的对应关系,本实施例中权限资源緩存模块10为Cache。通过增加权限 资源缓存it块lO,在系统启动时,即将每个业务模块的权限资源信息加载到其 中,避免了鉴别用户权限时候每次都从文件读取信息,力口快了系统的响应速度。
利用上述系统实施例,本发明还提供一种权限管理的方法的实施例,如图4 所示,为利用系统实施例一进行权限管理的方法实施例一的具体工作流程图, 本方法实施例 一 包括以下步骤
步骤401:用户登录,权限系统验证用户密码是否通过,验证通过的用户进 入系统;
步骤402:用户登录后,用户权限緩存模块查询数据库中的用户角色表,读 取用户对应的角色;
步骤403:用户权限緩存模块查询数据库中的角色权P艮表,根据用户的角色 读取用户所分配权限的权限标识符;
步骤404:用户权限緩存模块查询权限资源子文件模块,根据权限标识符读 取该用户的权限资源并将权限资源保存在用户权限緩存模块中;
步骤405:用户发送对业务组件进行操作的请求;
步骤406:权限校验模块拦截用户请求,从用户权P艮緩存模块中读取该用户 所分配的权限资源,并判断用户所分配的权限是否包含该用户所请求的权限, 是则进入步骤407,否则结束访问;
步骤407:权限校验通过,权限校验模块调用业务逻辑组件模块,用户获得 所请求的资源的纟喿作权限。如图5所示,为利用系统实施例二所提供系统进行权限管理的方法的实施例 二的具体工作流程图,本方法实施例二包括以下步骤
步骤501:系统启动时,将权限资源文件模块中的权限静态资源解析到权限 资源緩存模块中保存;
步骤502:用户登录,系统验证用户密码是否通过,验证通过的用户进入系
统;
步骤503:用户登录后,用户权限緩存模块查询数据库中的用户角色表,读 取用户对应的角色;
步骤504:用户权限缓存模块查询数据库中的角色表与角色权限表,根据用 户的角色读取用户所分配权限的标识符;
步骤505:用户权限緩存模块查询权限资源緩存模块,根据权限标识符读取 该用户的权限资源并将权限资源保存在用户权限緩存模块中;
步骤506:用户发送对业务组件进行操作的请求;
步骤507:权限校验模块拦截用户请求,从用户权限緩存模块中读取该用户 所分配的权限资源,并判断用户所分配的权限是否包含该用户所请求的权限, 是则进入步骤508,否则结束访问;
步骤508:权限校验通过,权限校验模块调用业务逻辑组件模块,用户获得 所请求的资源的操作权限。
需要说明的是,上述本发明的方法实施例,可以以计算机语言写成并执行, 而该由计算机语言所写成的软件程序可以存储在任何微处理单元可以辨识、解 读的记录介质中,或者存储在包含有记录介质的物品或装置中。由于本发明的 权限管理方法已清楚完整地揭露,任何熟悉计算机语言者阅读本发明说明书即 知如何撰写软件程序,故有关软件程序细节部分在此不再赘述。
实施上述实施例,各业务逻辑组件模块都有自己单独的权限资源文件,使 得系统中的权限与权限进行分离,业务逻辑组件模块的新增和移除,都无需动 用源代码,权限控制都可以灵活控制,后续的维护、修改可以很容易地进行,并且可以按照客户需求进行定制和开发新的业务模块,伸缩性强。另外,各业 务模块的权限资源单独存放,实现系统的组件化,对于系统业务模块的新增和 移除,做到了插拔式的方便。
其次,权限资源采用文件存储方式,大大降低调用者的使用难度,用户只 需要在按要求生成权限资源文件,并且提供了极大的可扩展性和可控制性。
另外,在服务启动时候,即将每个业务模块的权限资源信息加载到其中, 避免了鉴别用户权限时候每次都从文件读取信息,加快了系统的响应速度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领 域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则 之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范 围之内。
权利要求
1、一种权限管理方法,用于在权限管理系统中对用户的操作请求进行校验,其特征在于,所述方法包括接收用户提出的操作请求;从数据库中获取所述用户所属的角色所分配的权限标识符,所述数据库存储用户、角色及角色所分配的权限标识符的对应关系;从系统中的各权限资源子文件中获取并缓存与所述权限标识符相对应的权限资源,所述各权限资源子文件对应于系统中的各业务逻辑组件模块,所述权限资源子文件存储其所对应的各业务逻辑组件模块的权限资源;拦截用户的操作请求并判断所述用户所分配的权限资源是否包含所述操作请求,是则接受所述操作请求,否则拒绝所述操作请求。
2、 根据权利要求1所述的方法,其特征在于,所述方法进一步包括设定 用户、角色、权限标识符与权限资源之间的关联关系;所述设定用户、角色、角色所分配的权限标识符与操作权限资源之间的关 联关系具体为配置数据库,所述数据库包括用户表、用户角色表、角色表、角色权限表, 所述用户表、用户角色表、角色表、角色权限表提供用户与其所属角色、其所 属角色所分配的权限标识符的关系列表;为所述系统配置至少一个权限资源子文件,配置所述各权限资源子文件中 存储的权限资源与权限标识符之间的对应关系。
3、 根据权利要求1所述的方法,其特征在于,所述从数据库中获取所述用 户所属的角色所分配的权限标识符包括用户成功登录系统后,查询数据库中的用户角色表,获取所述用户所属的 角色;查询数据库中的角色表与角色权限表,获取所述用户所属的角色所分配的 4又限标识符。
4、 根据权利要求1所述的方法,其特征在于,从系统中的各权限资源子文件中获取并緩存与所述权限标识符相对应的权限资源包括将所述各权限资源子文件中存储的权限资源解析到权限资源緩存模块中保存;根据所述权限标识符从所述权限资源緩存^t块中获取并緩存所述用户所分 配的权限资源。
5、 一种权限管理系统,其特征在于,所述系统包括权限校验模块、至少一 个权限资源子文件模块、数据库以及至少一个业务逻辑组件模块;所述数据库用以存储用户、角色及角色所分配的权限标识符的关系列表; 所述业务逻辑组件才莫块,用以实现系统的各项业务逻辑功能; 所述各权限资源子文件模块对应于系统中的各业务逻辑组件模块,用以存储其所对应的各业务逻辑组件模块的权限资源,所述各权限资源子文件模块中存储的权限资源与所述凄t据库中的;k限标识符相对应;所述权限校验模块用以从所述数据库中获取用户所分配的权限标识符,根据所述权限标识符查询所述各权限资源子文件模块,获取并存储用户所分配的权限资源,拦截用户发送的对所述业务逻辑组件模块的操作请求,校验用户是否具有所请求的权限。
6、 根据权利要求5所述的权限管理系统,其特征在于,所述数据库包括用 户表、用户角色表、角色表、角色权限表,所述用户表、用户角色表、角色表、 角色权限表存储用户与其所属角色、其所属角色所分配的权限标识符的关系列 表。
7、 根据权利要求5所述的权限管理系统,其特征在于,所述权限校验模块 为面向方面编程权限校验模块,所述面向方面编程权限校验模块包括用户权限 緩存模块与权限校验模块;所述用户权限緩存模块用以从所述数据库与权限资源子文件模块中读取数 据,获得用户所分配的权限资源并存储;所述权限校验模块用以拦截用户向所述业务逻辑组件模块发送的操作请求,从所述用户权限缓存模块中读取用户所分配的权限资源,校验用户是否具 有所述纟喿作请求的权限。
8、根据权利要求5所述的权限管理系统,其特征在于,所述系统进一步包 括权限资源緩存模块,所述权限资源緩存模块用以緩存所述权限资源子文件模 块中的权限资源,所述权限校验模块获取所述用户所分配的权限标识符后,根 据所述权限标识符从所述权限资源緩存模块中获取并緩存所述用户所分配的权 限资源。
全文摘要
本发明公开了一种权限管理方法,该方法用于在权限管理系统中对用户的操作请求进行校验,所述方法包括接收用户提出的操作请求;从数据库中获取所述用户所属的角色所分配的权限标识符,所述数据库存储用户、角色及角色所分配的权限标识符的对应关系;从系统中的各权限资源子文件中获取并缓存与所述权限标识符相对应的权限资源,所述各权限资源子文件对应于系统中的各业务逻辑组件模块,所述权限资源子文件存储其所对应的各业务逻辑组件模块的权限资源;拦截用户的操作请求并判断所述用户所分配的权限资源是否包含所述操作请求,是则接受所述操作请求,否则拒绝所述操作请求。同时,本发明还公开了一种权限管理系统。利用本发明提供的方法和系统,本发明满足了系统要细致到每个操作界面的每个操作的权限控制需求,实现了对业务模块权限资源后续开发、维护的便利,同时也可实现用户根据需求对业务模块的灵活定制。
文档编号G06F9/44GK101414253SQ20071012395
公开日2009年4月22日 申请日期2007年10月17日 优先权日2007年10月17日
发明者黄建蝉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1