RBAC–基于角色权限控制
- RBAC(Role-Based Access Control),即基于角色权限控制。将用户关联角色,角色关联权限的方式间接赋予用户权限。
- 基本组成部分
- 用户(User): 每个用户都有唯一的UID,并授予不同的角色。
- 角色(Role): 不同角色具有不同的权限。
- 权限(Permission): 对功能模块的操作权限。
- RBAC实现了用户和权限的逻辑分离,极大方便权限管理和赋予。
若依–权限控制说明
- 权限标识
前后端都是通过权限标识进行权限控制
- 角色权限分配
修改普通角色的权限为用户查询
- 用户角色赋予
将普通用户的角色赋予给ry这个用户
- 用户登录查看
登录ry用户查看时用户管理时,与上图用户管理列表相比,发现缺少了相关操作的按钮
- 前端权限源码
查看前端源码时发现v-hasPermi指令,该指令为自定义指令
删除后保存,刷新页面时显示了新增按钮
从源码上看,大体意思是从store中获取用户所拥有的所有权限,遍历用户的权限,判断是否包含"* : * : *"或匹配从v-hasPermi传过来数组列表,将不匹配的进行删除,最后将匹配上的权限操作/按钮显示到页面上
- 后端权限源码
@PreAuthorize()通过权限标识进行权限控制
在删除前端新增v-hasPermi基础上进行新增操作时,会提示报错,是由于@PreAuthorize()注解上,@ss.hasPermi()进行验证当前用户是否拥有该权限,如果没有该权限时,则返回false,对于false则会报错提示
通过该流程分析,若依实际上是基于角色权限控制
自定义–实现权限控制
-
后端定义新接口
通过@PreAuthorize()设置访问权限标识
-
前端添加按钮和方法
- 前端新建和配置菜单权限
新建菜单
分配权限
- 前端测试访问新接口