Role-Based Access Control
核心在于用户只和角色关联,而角色代表对了权限,是一系列权限的集合。
RBAC 三要素:
-
用户:系统中所有的账户(包括正常用户和管理员)
-
角色:一系列权限的集合(如:管理员,开发者,审计管理员等)
-
权限:菜单,按钮,数据的增删改查等详细权限。
在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。
角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。
角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系同样也存在继承关系防止越权。
优点:便于角色划分,更灵活的授权管理;最小颗粒度授权;
注意:多表查询不要出现三张表以上的sql查询
三张表(用户、角色、权限)使用关联表
案例地址:https://github.com/lldwb/AuthorityManagement.git
业务思路介绍
- 首先获取用户id和访问路径
- 根据用户id获取角色id集合(如果没有用户id就返回作为访客的角色)
- 根据url获取角色id集合
- 根据获取的两个角色id集合遍历判断是否有权限