RBAC,基于角色的权限访问控制

RBAC,基于角色的权限访问控制

Role-Based Access Control

核心在于用户只和角色关联,而角色代表对了权限,是一系列权限的集合。

RBAC 三要素:

  1. 用户:系统中所有的账户(包括正常用户和管理员)

  2. 角色:一系列权限的集合(如:管理员,开发者,审计管理员等)

  3. 权限:菜单,按钮,数据的增删改查等详细权限。

在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。

角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。

角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系同样也存在继承关系防止越权。

优点:便于角色划分,更灵活的授权管理;最小颗粒度授权;file

注意:多表查询不要出现三张表以上的sql查询

file

三张表(用户、角色、权限)使用关联表

案例地址:https://github.com/lldwb/AuthorityManagement.git

业务思路介绍

  1. 首先获取用户id和访问路径
  2. 根据用户id获取角色id集合(如果没有用户id就返回作为访客的角色)
  3. 根据url获取角色id集合
  4. 根据获取的两个角色id集合遍历判断是否有权限