后台权限控制及动态路由

需求

后台系统需要能实现不同的用户权限可以看到不同的功能。

用户只能使用他的权限所允许使用的功能。

功能设计

之前在我的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的,状态为正常的,未被删除的权限

数据格式如下:

相关推荐
C++、Java和Python的菜鸟15 分钟前
第9章 后端Web进阶(AOP)
java·开发语言·前端
软萌萌的120 分钟前
Python零基础从入门到精通详细教程-数据类型
开发语言·windows·python
东北赵四27 分钟前
关于Java泛型的知识点及其相关面试题
java·windows·python
姓蔡小朋友29 分钟前
Java线程并发
java·开发语言·python
程序员cxuan40 分钟前
DeepSeek-V4-Flash 正式版来了!这次提升有点夸张。
人工智能·后端·程序员
执笔画流年呀1 小时前
⾃动化测试常⽤函数
java·dubbo
我星期八休息1 小时前
扩展— TCP 全连接队列与 tcpdump 抓包
linux·服务器·开发语言·前端·网络·tcp/ip·tcpdump
疯狂打码的少年1 小时前
【面向对象】UML概述(基本构造块:事物/关系/图)
java
小小代码狗1 小时前
PHP 常用函数与变量参考文档
开发语言·安全·php
一水2 小时前
TTFT优化:一个方案的5次推倒重来
java·ai·状态模式