1. RBAC权限控制模型
RBAC(Role-based access control)是一种以角色为基础的访问控制(Role-based access control,RBAC),它是一种较新且广为使用的权限控制机制,这种机制不是直接给用户赋予权限,而是将权限赋予角色。
RBAC 权限模型将用户按角色进行归类,通过用户的角色来确定用户对某项资源是否具备操作权限。RBAC 简化了用户与权限的管理,它将用户与角色关联、角色与权限关联、权限与资源关联,这种模式使得用户的授权管理变得非常简单和易于维护。
2. 数据库设计
1 | -- 用户表 |
3. 代码进化
- 修改注册逻辑,注册时添加用户权限
1 | public ResponseJson<SysUser> register(SysUser sysUser) { |
- 封装JWT服务工具类
1 |
|
- 编写获取用户可访问菜单接口(用户登录后,携带Token去获取用户角色,根据角色计算出用户可访问菜单)
1 |
|
1 | public ResponseJson<List<SysMenu>> menuList(String username) { |
1 | <select id="getRoleIdsByUserId" resultType="java.lang.Long"> |
4.测试
- 普通用户可访问菜单:
- 管理员可访问菜单:
源码地址:https://github.com/chaooo/spring-security-jwt.git,
这里我将本文的前后端分离后台菜单权限控制放在github源码tag的V3.0中,防止后续修改后代码对不上。