第三章
用户角色权限RBCA
第一章介绍了专业细粒度权限管理软件
Metadmin
的安装。第二章讲解了对于
WEB
页面的控制。哪些页面需要登录才能访问,哪些页面不需要登录就能访问。需要登录的页面,又如何页面访问权限呢?即具有什么样角色的人才能访问。
本章详细讲解用户角色权限关系。这也就是
RBCA(Role Based Access Control
,基于角色的访问控制
)
。功能级权限控制到本章为止,就介绍完毕。下章开始介绍细粒度权限控制。
场景介绍
基于角色控制模型已经深入人心,关系并不复杂,广泛运用于各个系统。通过给用户赋予角色、角色拥有权限的模式,达到控制用户具有权限的目的。同时,还复用了角色,这样可以让多个相同职务(或职能)的人拥有同样的角色。
比如:
-
张三是管理员,他可以修改系统配置参数;
-
李四是客服人员,他可以呼叫客户,处理客户反馈;
-
王五是销售人员,他可以下订单,维护客户资料。
RBAC
局限性
通过这种定义方式,只要拥有该权限的人,访问该资源的时候,会产生相同的效果。比如:李四是北京客服人员,而洪七是上海客服人员,他们呼叫的客户范围是不同的。
如果,定义北京客户人员,上海客户人员
2
种角色,那么如果有多个地方,这维护起来太费力。
如果,给李四和洪七的用户名下,分配资源。就是有些网友提出的解决方案:用户--资源表。那么每个用户都要维护一次,每个客户维护一次,这更费力。
显然上述两种方案,都不可取。因为,这些都属于细粒度、数据级的权限控制,
RBAC
模型无能为力。这种细粒度控制下章开始介绍。
数据库模型
基本信息表
权限定义,要包含以下几大类信息:
1, 该权限的基本信息;
2, 一般会将整个系统权限看成一棵树,该权限在权限树上的位置;
3, 该权限对应的资源,一般为
WEB URL
。
那么权限表有这么几个字段:
id,
name, description, parented, url, target
角色定义非常简单:
id,
name, description
用户表就不多说了,这是一个业务领域的表。不同系统,用户表结构是不一样的。
权限关系表
角色、权限关系表:
id,
privilegeId, roleId
,一个角色可以拥有多个权限,一个权限可以被多个角色拥有,多对多关系。
用户、角色关系表:
id,
userId, roleId
,同样是多对多关系。
判断逻辑
指定用户、指定权限,判断该用户是否拥有该权限。
select roleId from
用户、权限管理系表
where userId=? and roleId
in( select roleId from
角色、权限关系表
where privilegeId=?)
如果有记录,表明该用户拥有该权限,否则表示不拥有。
如果使用
Metadmin
Metadmin
是细粒度权限管理中间件,可以在
www.metadmin.com
下载试用版。以下界面均引用下载程序包里面的演示示例。
在安装用户元数据文件的时候,
Metadmin
会自动创建相关权限表(权限表、角色表、权限角色关系表、角色用户关系表)。在
RBAC
控制方面,
Metadmin
提供如下服务:
1, 自动创建相关数据库表;
2, 维护权限、角色、给用户授权,整套后台程序以及前台界面;
3, 提供权限认证
API
,供业务系统调用。
开发者只要在业务方法里面调用
API
即可,不需要做任何程序开发。
权限界面及常量导出
权限维护界面:树形结构

权限定义维护界面:输入项参数

常量导出界面:导出定义的权限,开发者将这些常量放入自定义的常量类里面,方便以常量的形式引用各种权限。

其他界面
其他管理界面,创建角色、给角色分配权限,给用户分配权限。这些没有什么特殊之处,仅贴出给角色分配权限界面,其他不再多说了。
给角色分配权限界面:

API
就功能权限方面,
Metadmin
提供如下
2
个
API
:
MetadminService
类:
WebMetadminService
类,更方面给
WEB
程序调用的,自动从
req
里面读取用户:
static boolean
|
hasPrivilege
(HttpServletRequest req,
int privilegeId)
判断指定用户是否拥有指定的权限
|
完整
API
可在线浏览:
http://www.metadmin.com/doc/javadoc/index.html
Metadmin
对于应用安全的考虑
细心的读者,肯定会问:
1, 给用户分配角色是业务管理职责,创建角色、权限,维护角色、权限关系是系统管理员职责。这样笼统的提供一个界面,让大家都能使用,这种做法不可取。
2, 即便是给用户分配角色,不同业务管理员可以分配的用户范围是不同的。
是的,
Metadmin
对此持有相同看法。为此,
Metadmin
预定义了
3
个权限:角色管理、给用户分配角色和策略管理三种角色。
如图示:

拥有“角色管理”权限的用户,可以增加、删除、修改角色,维护角色拥有的权限;
拥有“给用户分配角色”权限的用户,可以管理用户具有的角色。至于该用户能够查看到哪些用户,
Metadmin
也预留了控制功能。如何控制在此暂时不表。
拥有“策略管理”权限的用户,能够进行细粒度权限管理工作,制定权限策略。如何制定权限策略,以后章节会逐步介绍。
为了让对
Metadmin
界面访问权限生效,还需要对
web.xml
进行修改。将
secured
参数值由
false
改为
true
。
如图示:

分享到:
相关推荐
RBCA允许管理员将权限分配给特定的角色,而不是单独的用户。用户通过加入不同的角色来获取相应的权限,这简化了权限管理,同时也便于权限的集中管理和动态调整。 总的来说,这个权限管理系统结合了JSF、SPRING、...
Spring Security 动态加载用户角色权限实现登录及鉴权功能 在 Spring Security 中,动态加载用户角色权限是实现登录及鉴权功能的关键步骤。本文将详细介绍如何使用 Spring Security 实现动态加载用户角色权限,并...
SpringBoot-RBCA是一个基于SpringBoot框架开发的权限管理系统,主要展示了如何利用RBAC(Role-Based Access Control,基于角色的访问控制)模型实现细粒度的权限管理。在这个项目中,我们将深入探讨SpringBoot的核心...
通过这些框架,开发者可以方便地构建访问控制模块,包括系统管理模块(用户管理、角色和权限管理)和身份认证模块,确保用户只有在正确身份验证后才能访问相应的资源。 数据库设计方面,除了上述提到的用户、角色、...
用户管理 日志管理 权限管理 角色管理 系统信息 客户管理 我的客户 联系跟进 客户流失 销售机会 客户服务 我的服务 服务统计 客户关怀 统计 个人中心 环境需要 1.运行环境:最好是javajdk1.8,我们在这个平台上运行...
RBAC是一种重要的访问控制方法,它通过定义不同的角色来管理用户的权限,从而实现更细粒度的访问控制。 #### 二、RBAC参考模型 RBAC参考模型主要包括三个部分:核心RBAC(Core RBAC)、分层RBAC(Hierarchical RBAC)...
基于角色的权限访问控制RBCA(Role-Based Access Control) Spring+Springmvc+Mybatis三大框架 Ajax技术 springmvc文件上传 shiro安全框架 Redis缓存 JavaMail邮件 基于aop切面的日志管理 Layui前端框架 登录验证码 ...
开发语言:JAVA 数据库:MySQL5.7以上 开发工具:IDEA/Vscode 基于 SpringBoot + Mybatis + Shiro + mysql + redis构建的智能云教育平台。...6、RBCA权限管理:主要包括用户管理、角色管理、权限管理。
基于 SpringBoot + Mybatis + Shiro + mysql + redis构建的智能教育平台。架构上使用完全前后端分离。 支持多种题型:选择题、多选题、判断题、填空题、综合题以及数学...RBCA权限管理:主要包括用户、角色、权限
基于 SpringBoot + Mybatis + Shiro + mysql + redis构建的智能教育平台。架构上使用完全前后端分离。 支持多种题型:选择题、多选题、判断题、填空题、综合题以及数学公式...RBCA权限管理:主要包括用户、角色、权限
Java智慧云智能教育平台源码 前后端分离 基于 SpringBoot + Mybatis + Shiro + mysql + redis构建的智能教育平台。架构上使用完全前后端分离。 支持多种题型:选择题、多...RBCA权限管理:主要包括用户、角色、权限
基于角色的权限访问控制RBCA(Role-Based Access Control) Spring+Springmvc+Mybatis三大框架 Ajax技术 springmvc文件上传 shiro安全框架 Redis缓存 JavaMail邮件 基于aop切面的日志管理 Layui前端框架 登录验证码 ...
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,...
基于角色的权限访问控制RBCA(Role-Based Access Control) spring+springmvc+mybatis三大框架 Ajax技术 springmvc文件上传 shiro安全框架 redis 缓存 JavaMail邮件 Springmvc 基于aop切面 的日志管理 Layui 前端...
客户关系管理系统系统开发环境以及版本操作系统:Windows_7集成开发工具:Eclipse EE_4.7编译环境:JDK_1.8 Web服务器:Tomcat_9.0数据库:MySQL_5.7.23系统框架spring框架springmvc框架mybatis框架Logback日志框架...