概念
RBAC (Role-Based Access Control
) 是基于角色的访问控制,是一种用设计权限的一种思想,主要是将功能组合成角色,再将角色分配给用户
目标:
- 解耦用户和功能,降低操作错误率
- 降低功能权限分配的繁琐程度
实现思想
RABC 主要有user 用户表,role角色表,permission权限表,以及role-permission和user-role的中间关联表,但是实际上对于一般的需求,我们可以只使用user用户表, 里面存储字段标识 角色信息,然后在代码层面进行编码方式 使用enum枚举出所有角色表,使用权限注解标识方法,将权限注解与方法进行一个绑定,其中权限里面包括(角色)信息,通过拦截器进行拦截权限进行筛选。
从上面这个的图片来看,我们将用户和角色关联,角色和权限关联,并且都是N对N的关系,所以要创建两个新的关系表。
将相同权限的用户封装成一个角色,然后将某一个角色与多个权限相关联起来,一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。
这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理。这种“权限赋予给角色,把角色又赋予用户”的权限设计既清晰,又易管理。