RBAC(基于角色的权限访问控制)数据库设计

  • A+
所属分类:PHP

大多数项目中,多多少少都会涉及到权限控制,各种编程语言也有相对应的开源代码。但是,在项目复杂的项目中,可能无法满足我们的需求,因此,我们来介绍下完整的RBAC 及其数据库设计。

RBAC,即基于角色的权限访问控制(Role-Based Access Control), 下面来设计其数据库。

数据库对应关系如下图:

RBAC(基于角色的权限访问控制)数据库设计

首先三张基础数据库表:

用户(rabc_user) 表:

RBAC(基于角色的权限访问控制)数据库设计

角色(rbac_role)表:

RBAC(基于角色的权限访问控制)数据库设计

权限(rbac_node)表:

RBAC(基于角色的权限访问控制)数据库设计

以上三张表,分别负责存放用户(rbac_user)、角色(rbac_role)、权限(rbac_node)的信息, 如需其他信息,可自行添加字段。

下面我们创建角色与权限的中间表,负责角色与权限的对应:

RBAC(基于角色的权限访问控制)数据库设计

在很多开源项目中, 一般只有这三张表,在用户(rbac_user)中加入 role_id ,即可实现用户的权限访问控制。

然而,对于多角色的访问控制, 我们仍需要加入另一张表,负责角色与用户的对应:

RBAC(基于角色的权限访问控制)数据库设计

到此,我们可以通过以上5张表实现多角色的权限访问控制,但是当我们取用户权限时,需要连接4张表才可以取到权限,代码会比较复杂,因为,我们可以通过视图来简化我们的业务逻辑。不熟悉视图的朋友,可以参考MySQL 视图应用以及介绍 进行学习。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: