background image

PHP

框架 ThinkPHP 的 RBAC(基于角色权限控制)

一、什么是 RBAC

基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制
访问)的有前景的代替受到广泛的关注。
在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。
这就极大地简化了权限的管理。
在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派
相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系
统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可
以建立起来以囊括更广泛的客观情况。

二、ThinkPHP 中的 RBAC

先看下官方给的实例所用到的数据表,通过 5 张表实现权限控制,定义如下:
RBAC 要用到 5 个数据表
think_user (用户表)
think_role (用户分组表)
think_node (操作节点)
think_role_user (用户和用户分组的对应)
think_access (各个操作和用户组的对应)

用户表

角色表,有哪些角色,该角色与对应的 userid 用户相关联