通用权限管理的设计思想与实现
一.引言
权限管理一直以来都是每个应用系统不可缺少的部分,而且几乎是每个应用系统都重新对系统的权限进行重新设计,以满足不同系统用户的需求,目前很少公司对权限管理形成一套通用、灵活、完全可复用且易嵌入应用系统的组件模块。
经过长时间的摸索与探讨,本人设计并实现了通用权限管理组件,并且在数据报告一期和二期的项目中已经投入了使用。该组件分为两部分,一部分是权限管理UI,一部分是应用系统API,其中权限管理UI采用Java swing实现,可以在桌面应用和Web应用系统中进行调用java用户角色权限设计,应用系统API有两套实现,一套是Java,另一套是.NET。如果要适应所有开发语言,可以把权限Java API和.NET API发布到WEB Service上。数据库支持Oracle、sqlServer、Sybase。
这里,我只对该组件进行简单的介绍。
二.目标
满足各类应用系统的权限管理需求,做到灵活、通用、方便。
具体来说,就是可以对应用系统的所有资源进行权限控制,我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也分别称为对象资源和数据资源,后者是我们在系统设计与实现中的叫法。为了让权限操控界面友好且易用,要求对象资源和数据资源的进行树状组织。
总之,系统的目标就是对应用系统的所有对象资源和数据资源进行权限控制,比如应用系统的功能菜单、各个界面的控件、数据显示的列以及各种动态数据进行权限的操控。
三. 相关概念
为了更好地理解权限管理系统java用户角色权限设计,我们需要对几个概念作全面的了解。
1.用户
应用系统的具体操作者,包括账户、用户名称等信息
2.用户分组
为了更好地管理用户,对用户进行分组归类,简称为用户分组。可以组织多个层次,即用户分组可以形成树状视图,便于管理。注意,它与具体的权限无关。
3.角色
为了对许多用户拥有相似权限的进行分类管理,这类分组统称为角色,角色可以形成树状视图,便于管理
4.对象资源
应用系统中提供的要进行权限操控的静态资源,、界面控件(按钮等)、数据显示的列等各种静态的资源,对象资源可以形成树状视图
5.数据资源
应用系统中提供的要进行权限操控的动态资源,包括应用系统的各种数据,比如部门、仓库、航线性质、营业部等数据,数据资源可以形成树状视图
6.数据资源分类
为了对数据资源更好的进行管理,对数据资源进行的归类
7.访问权限
对应用系统的对象资源或者数据资源具备了访问(操作)的权限,即可以操作相应的要授权的资源
8.管理权限
对应用系统的对象资源或者数据资源具备了管理的权限,即用户或者角色可以把相应的资源授权给其他用户或者角色(即二次授权或多次授权)
9.用户权限
某个用户拥有对象资源和数据资源的访问权限或者管理权限,从应用系统角度看某个用户的权限包括该用户的具体权限及该用户被授予角色的权限的合集
10.角色权限
某个角色拥有对象资源和数据资源的访问权限和管理权限
11. 用户归属角色
一个用户可以被授予多个角色,一旦用户拥有了某个角色,也就拥有了某个角色的所有权限,如果用户没有分配角色,用户的权限只有该用户被授予的对象资源和数据资源的权限
四.具体功能
1.描述
用户可以按角色进行授权,也可以个别授权。用户拥有被赋予角色的所有权限,用户除了拥有相应角色的权限外,还可以拥有自己独特的权限,也就是说,用户权限是该用户的权限和被授予的角色权限的合集。
权限的选项包括“访问”和“管理”2种, “访问”表示用户或角色能访问应用系统资源的权限,“管理”表示用户或者角色可以把相应的资源进行二次授权,即可以给别人授权。这里的资源指前面提到的对象资源和数据资源的统称。
基本原理:通过判定某个账户是否拥有某个资源的访问权限,就可以操控应用系统的权限;通过判定某个账户是否拥有某个资源的访问权限,就可以对该资源进行二次授权。
2.约定
A. 系统保留有一个超级用户,拥有系统的所有权限,系统使用时首先由超级用户建立一个或多个应用用户和角色,然后由应用用户进行权限管理操作
B. 提供账户锁定与解锁功能,一旦账户锁定,用户将暂时不能登录系统
C. 如果应用中引用的资源没有在资源表中登记,那么任何用户都拥有该资源的访问权限
D. 可以对已经登记的对象资源和数据资源进行统一的控制,即对每个资源分配一个授权标记数据报告,如果标记为0,那么该资源无需授权给用户或者角色,任何用户都有访问该资源的权限。只有标记为1的资源才参与用户权限和角色权限的分配
E. 用户分组维护、用户维护、角色维护、用户权限、角色权限本身登记为对象资源,资源标记分别定义为user_group_man、user_man、role_man、user_power_man、role_power_man;用户分组及用户数据、角色数据本身登记为数据资源,资源标记分别为user_data、role_data
F. 提供权限操作的详细日志,便于系统跟踪
G. 用户、角色的主键ID生成来自一个同sequence,不能重复
H. 对象资源和数据资源登记时要避免主键ID重复
3.功能
1) 用户权限管理:
提供用户分组维护、用户维护及用户权限分配功能:
n 用户分组维护:用户分组增加、删除、修改,增加时用户可以选择在树的哪个节点下增加用户分组,从而构造用户分组的树状结构
n 用户维护:用户增加、删除、修改、账户锁定与解锁、口令修改,增加用户时用户可以选择在哪个用户分组下增加
n 用户权限分配:调入操作用户拥有管理权限并且资源统一授权标记为1的对象资源、数据资源和归属角色,用户分组及用户调入时只调入该操作用户具有管理权限的用户数据资源,然后提供对这些对象资源和数据资源的访问权限和管理权限的权限分配,界面参考如下(分别对应归属角色、对象资源、数据资源的权限分配):
2) 角色权限管理
提供角色维护及角色权限分配功能:
n 角色维护:角色增加、删除、修改,增加时角色时可以选择在树的哪个节点下增加角色,从而构造角色树状结构
n 角色权限分配:调入操作用户拥有管理权限并且资源统一授权标记为1的对象资源、数据资源,角色调入时只调入该操作用户具有管理权限的角色数据资源程序开发,然后提供对这些对象资源和数据资源的访问权限和管理权限的权限分配,界面参考如下(分别对象资源、数据资源的权限分配):