RBAC(基于角色的权限控制)
一句话:不给每个用户单独配置权限,而是先定义几种"角色"(如管理员、编辑、访客),每种角色对应一组权限,用户只需要被分配角色。
它是什么
RBAC(Role-Based Access Control)是最主流的权限管理模型:权限不直接绑定到用户,而是绑定到角色,用户通过被分配某个角色间接获得对应权限。好处是权限调整只需要改角色的权限配置,不用逐个用户去改,也更容易理解和维护。
适合干什么
- 用户量较大、角色分类清晰的系统
- 需要灵活调整权限而不想每次都改代码的场景
不适合干什么
- 只有一两个用户、权限区分极简单的场景(直接判断是不是管理员可能比引入RBAC模型更简单)
普通人怎么用
设计三个核心概念的对应关系:用户(User)属于哪些角色(Role),角色拥有哪些权限(Permission),判断一个用户能不能做某件事,就看他的角色是否包含对应的权限。
进阶用户怎么用
复杂系统可能需要角色继承(比如"高级管理员"继承"普通管理员"的所有权限再加一些)、以及基于资源的细粒度权限(不只是"能不能编辑文章",还要看"能不能编辑别人的文章");权限变更要有审计日志记录。
常见误区
- 把角色和权限的概念搞混,角色是权限的集合(一个"标签"),权限是具体能做的某件事,两者不是一回事
- 给每个用户都创建一个独立角色,失去了RBAC本该带来的简化管理的意义,应该让多个用户共享同一角色
和相似工具的区别
- 和直接给用户绑定权限的区别:RBAC多了"角色"这一层,调整一批用户的权限只需要改角色配置,不用逐个用户修改,扩展性更好
入门步骤
- 列出系统需要的角色和每个角色对应的权限
- 设计用户-角色-权限的数据表结构
- 在接口层实现基于角色的权限校验