JAVA开发

RBAC模型概述

2018-08-29  本文已影响0人  莉莉妮特

什么是RBAC

注意不是RABC,手抖容易打错。

RBAC(基于角色的权限控制)模型是为了解决系统中的权限管理问题。在用户和权限基础上引入了角色这个概念,这样通过对角色的管理极大程度地降低了用户和权限之间的耦合。

以前进行权限管理是针对用户的,无论是新增还是删除都需要重复若干遍。如果是在大公司,人员权限一多经常让人痛不欲生,而且容易出错。

引入角色后管理效率直接提高,而且不易出错。

权限的分类

权限包括菜单、页面、页面元素、数据这四大类。下面来分别介绍一下。

1.菜单

菜单是最顶级的分类,在复杂的系统中菜单经常是多级的,比如二级、三级,在菜单层面进行限制是最直接的。

一些简单的系统中使用不到RBAC,经常是在配置文件直接指定角色的菜单,而不需要开发完善的后台管理界面。

2.页面

在成熟的系统中,菜单下面往往有多个页面,比如运营管理这个大模块下面可能包含了banner管理,插屏管理,开屏广告管理等等。每个人需要使用的页面不一定一样,这样就需要对页面进行设置。

3.页面元素

页面中的元素往细了说可以是添加按钮,保存按钮,分页组件等等。有些人在页面中没有添加权限,这个时候可以屏蔽掉添加按钮这个页面元素。

4.数据

数据层面的理解相对复杂一点。这里列举2个例子说明一下。第一,销售总监需要看到多个销售主管的数据,销售主管只能看到下面销售的数据,销售只能看到自己的数据。第二,房产频道小编只能看到该频道的资讯文章,而财经商业频道的小编能看到财经商业的资讯文章,总编则能看到全部频道的下的内容。数据权限一般需要根据城市、部门等多因素来进行设计。

RBAC分类

1.基本模型RBAC0

最基础的类型,用户与角色,角色与权限之间都是多对多关系。

2.角色分层模型RBAC1

简单来说,就是把角色再划分等级,每个等级划分不同的权限。角色之间有了上下级的关系,可以继承角色的权限。

3.角色限制模型RBAC2

相当于在RBAC基础上增加了一些约束条件。这种约束条件可以有很多种,比如说一个人不应该既是会计又是出纳,这样做的风险是非常大;比如说一个公司的超级管理员角色是有限的,而且只能是特定员工才能担任,比如说老板,产品总监等。

4.统一模型RBAC3

RBAC3其实就是前面几种情况的合集,一般只有在非常复杂的系统中才会用到。

RBAC的设计

1.在实际使用中,RBAC往往和部门设计挂钩。这样即符合用户的实际场景,也便于在数据层面做权限控制。否则在不同部门具有相同角色的人有了相同的权限,这无疑是不合理的。

2.通过在用户和权限之间增加角色的概念,达到了解耦的目的。在引入部门这个概念之后,岗位这个概念也随之诞生。因为随着用户角色的增加,将用户与角色匹配这个步骤很多时候是重复的,而大多数岗位的角色是固定的,特殊的人再特殊管理即可。所以通过岗位再次实现了解耦。

3.权限配置页面最好能按照菜单-页面来展示,支持全选,反选,否则系统管理员在管理时真的要疯掉。

上一篇下一篇

猜你喜欢

热点阅读