实现按钮级别的权限控制,基于上一篇Spring Secuirty(六)前后端分离菜单权限控制-前端动态路由的扩展。
前端部分还是基于vue-element-admin模板来演示。
这里实现按钮级别的权限判断的逻辑:每个按钮对应一个权限标识
,后台根据用户角色计算出当前用户可访问的权限标识
列表,前端登录后得到权限标识
列表存入全局,通过单个按钮的权限标识
去匹配列表里的。来实现按钮级别的权限判断。
1. 数据库添加权限表
1 | -- 系统权限表 |
2. 前端代码改造
登录后通过接口直接返回用户可访问指令级权限列表:
vue-element-admin模板已经封装了一个通过角色来判断的指令权限:v-permission。
这里需要修改其逻辑:
2.1 全局state
中添加permissions
列表
1 | // ---------------- state 中添加 permissions |
2.2 重写全局v-permission
指令逻辑
1 | /** |
2.3 重新checkPermission
权限判断函数逻辑
1 | /** |
3. 使用指令级权限
使用v-permission
指令
1 | <template> |
使用checkPermission
函数
1 | <template> |
4. 添加按钮权限,与菜单/按钮对角色授权演示
菜单中添加按钮的权限演示
菜单/按钮对角色授权演示
完整代码请查看源码:
源码地址:https://github.com/chaooo/spring-security-jwt.git,
这里我将本文的前后端分离后台菜单权限控制放在github源码tag的V5.0中,防止后续修改后代码对不上。
附:当前实例完整SQL
1 | -- 系统用户表 |