RBAC介绍
一、RBAC(Role-Based Access Control)
1、首先,先介绍一下RBAC思想尚未出现的时候,我们项目中的菜单(导航栏)权限是怎么控制的:
没有RBAC之前我们数据库或许会这样设计,用户表、菜单表,由于用户与菜单是多对多的关系,所以我们还要有一张关联表,如下图所示:
当我们需要新增一个用户,我们就需要将当前用户所具有的所有菜单项都插入关联表中。假如一个用户具有100个菜单项,那插入100个用户就需要插入10000+100条数据,效率是比较底下的。
2、接下来介绍一下我们的RBAC思想
RBAC(Role-Based Access Control)意思是基于角色的权限控制。什么叫做基于角色呢?举个例子:我们事先定义好一个角色,并赋予这个角色一些权限。当我们新增一个用户时,我们把该角色赋予该用户,那么该用户便具有了该角色所具有的所有权限,之后每次新增用户,我们只需要赋予其某个角色即可,大大增加了数据库的操作效率。
有了RBAC的思想之后,我们的数据库是这样设计的:
概括一下:
一、RBAC是一种思想,基于RBAC的思想设计数据库,然后根据数据库更好的完成权限的控制。
二、RBAC目前主要包含三种控制:
- 菜单控制:菜单栏的控制,不同权限的用户可以看到不同的菜单栏
- URL控制:可访问URL的控制,不同权限的用户可以访问不同的URL
- 资源可见性控制:功能按钮是否可见的功能,不同的用户可以看到不同的元素