RBAC权限模型介绍
我们开发一个系统,必然面临权限控制的问题,即不同的用户具有不同的访问、操作、数据权限。
RBAC权限模型简介
RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制。模型中有几个关键的术语:
某用户是什么角色?
某角色具有什么权限?
通过角色的权限推导用户的权限
RBAC的演化进程
用户与权限直接关联
想到权限控制,人们最先想到的一定是用户与权限直接关联的模式,简单地说就是:某个用户具有某些权限。如图:
张三具有创建用户和删除用户的权限,所以他可能系统维护人员
李四具有产品记录管理和销售记录管理权限,所以他可能是一个业务销售人员
这种模型能够清晰的表达用户与权限之间的关系,足够简单。但同时也存在问题:
现在用户是张三、李四,以后随着人员增加,每一个用户都需要重新授权
或者张三、李四离职,需要针对每一个用户进行多种权限的回收
一个用户拥有一个角色
在实际的团体业务中,都可以将用户分类。比如对于 薪水管理系统,通常按照级别分类:经理、高级工程师、中级工程师、初级工程师。也就是按照一定的角色分类,通常具有同一角色的用户具有相同的权限。这样改变之后,就可以将针对用户赋权转换为针对角色赋权。因为角色少、权限多,所以基于角色管理权限,减少用户在授权与权限回收过程中的过多操作。
一个用户有一个角色
一个角色有多个操作(菜单)权限
一个操作权限可以赋予多个角色
我们可以用下图中的数据库设计模型,描述这样的关系。
一个用户一个或多个角色
但是在实际的应用系统中,一个用户一个角色远远满足不了需求。如果我们希望一个用户既担任销售角色、又暂时担任副总角色。该怎么做呢?为了增加系统设计的适用性,我们通常设计:
一个用户有一个或多个角色
一个角色包含多个用户
一个角色有多种权限
一个权限可以赋予多个角色
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY