RBAC权限管理
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。而用户,角色,权限三者之间分别是多对多,多对多,多对多对多关系,简单的说,一个用户拥有若干个角色,一个角色可能是多个用户,它们两个通过一张主键表关联起来,形成多对多,一个角色拥有若干个权限,一个权限也被多个角色所拥有,它们两个通过一张主键表关联起来,形成多对多,而用户与权限有角色,而它们两个与角色分别又是多对多,则形成了多对多对多。这样构成“用户-角色-权限”的授权模型。
角色是什么?可以理解为一定数量的权限的集合,权限的载体,列如:一个论坛系统,“超级管理员”,“版主”都是角色。版主可管理版内的帖子,可管理班内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。
当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常繁琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。
在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮,某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件,菜单,页面元素等作为另一类,这样构成“用户-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。