需求
后台系统需要能实现不同的用户权限可以看到不同的功能。
用户只能使用他的权限所允许使用的功能。
功能设计
之前在我的SpringSecurity的课程中就介绍过RBAC权限模型。没有学习过的可以去看下 RBAC权限模型 。这里我们就是在RBAC权限模型的基础上去实现这个功能。
表分析
通过需求去分析需要有哪些字段。
建表SQL及初始化数据见:SGBlog\资源\SQL\sg_menu.sql
接口设计
getInfo接口
是
请求方式 | 请求地址 | 请求头 |
---|---|---|
GET | /getInfo | 需要token请求头 |
请求参数:
无
响应格式:
如果用户id为1代表管理员,roles 中只需要有admin,permissions中需要有所有菜单类型为C或者F的,状态为正常的,未被删除的权限
{ "code":200, "data":{ "permissions":[ "system:user:list", "system:role:list", "system:menu:list", "system:user:query", "system:user:add" //此次省略1000字 ], "roles":[ "admin" ], "user":{ "avatar":"http://r7yxkqloa.bkt.clouddn.com/2022/03/05/75fd15587811443a9a9a771f24da458d.png", "email":"23412332@qq.com", "id":1, "nickName":"sg3334", "sex":"1" } }, "msg":"操作成功" }
getRouters接口
请求方式 | 请求地址 | 请求头 |
---|---|---|
GET | /getRouters | 需要token请求头 |
请求参数:
无
响应格式:
前端为了实现动态路由的效果,需要后端有接口能返回用户所能访问的菜单数据。
注意:返回的菜单数据需要体现父子菜单的层级关系
如果用户id为1代表管理员,menus中需要有所有菜单类型为C或者M的,状态为正常的,未被删除的权限
数据格式如下: