- 修复父级路由页面缺少router-view导致子路由无法显示的问题 - 修复getAllMenus接口只返回根路由的问题,现在返回所有路由(包括子路由) - 修复权限管理页面菜单树构建逻辑,正确识别父子关系 - 将所有有子路由的父级index.vue改为只包含<router-view /> 修改的文件: - backend: RouteController.java, RouteService.java - frontend: application/index.vue, device/index.vue, my-application/index.vue, my-device/index.vue, screen/index.vue, system/index.vue, user-manage/index.vue, user-manage/permission/index.vue
Soybean Admin Backend
基于 Spring Boot 3.2 的后端服务,为 Soybean Admin 前端提供 API 支持。
技术栈
- Spring Boot 3.2.0
- MyBatis Plus 3.5.5
- MySQL 8.0+
- JWT (jjwt 0.12.3)
- Lombok
快速开始
1. 环境要求
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
2. 数据库初始化
# 登录 MySQL
mysql -u root -p
# 执行初始化脚本
source src/main/resources/sql/init.sql
或者直接在 MySQL 客户端中执行 src/main/resources/sql/init.sql 文件。
3. 配置数据库
编辑 src/main/resources/application.yml,确认数据库配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/soybean_admin?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: root
4. 启动项目
# 使用 Maven 启动
mvn spring-boot:run
# 或者先编译再运行
mvn clean package
java -jar target/soybean-admin-backend-1.0.0.jar
服务将在 http://localhost:8080 启动。
默认账号
| 用户名 | 密码 | 角色 | 说明 |
|---|---|---|---|
| admin | admin123 | R_SUPER, R_ADMIN | 超级管理员 |
| user | user123 | R_USER | 普通用户 |
API 接口
认证接口
1. 登录
POST /auth/login
Content-Type: application/json
{
"userName": "admin",
"password": "admin123"
}
2. 获取用户信息
GET /auth/getUserInfo
Authorization: Bearer {token}
3. 刷新令牌
POST /auth/refreshToken
Content-Type: application/json
{
"refreshToken": "xxx"
}
路由接口
1. 获取常量路由
GET /route/getConstantRoutes
Authorization: Bearer {token}
2. 获取用户路由
GET /route/getUserRoutes
Authorization: Bearer {token}
3. 检查路由是否存在
GET /route/isRouteExist?routeName=home
Authorization: Bearer {token}
响应格式
所有接口统一返回格式:
{
"code": "0000",
"msg": "success",
"data": {}
}
code: "0000" 表示成功,其他表示失败msg: 响应消息data: 响应数据
错误码
| 错误码 | 说明 |
|---|---|
| 0000 | 成功 |
| 1111 | 通用错误 |
| 7777 | 需要弹窗提示的登出 |
| 8888 | 直接登出 |
| 9999 | Token 过期 |
项目结构
backend/
├── src/main/java/com/soybean/admin/
│ ├── common/ # 通用类
│ │ └── Result.java # 统一响应格式
│ ├── config/ # 配置类
│ │ ├── WebConfig.java
│ │ └── InterceptorConfig.java
│ ├── controller/ # 控制器
│ │ ├── AuthController.java
│ │ └── RouteController.java
│ ├── dto/ # 数据传输对象
│ ├── entity/ # 实体类
│ │ ├── User.java
│ │ └── Route.java
│ ├── interceptor/ # 拦截器
│ │ └── AuthInterceptor.java
│ ├── mapper/ # MyBatis Mapper
│ │ ├── UserMapper.java
│ │ └── RouteMapper.java
│ ├── service/ # 服务层
│ │ ├── AuthService.java
│ │ └── RouteService.java
│ └── util/ # 工具类
│ └── JwtUtil.java
└── src/main/resources/
├── application.yml # 配置文件
└── sql/
└── init.sql # 数据库初始化脚本
前端配置
修改前端项目的 .env.test 或 .env.prod 文件:
VITE_SERVICE_BASE_URL=http://localhost:8080
开发说明
添加新接口
- 在
entity包中创建实体类 - 在
mapper包中创建 Mapper 接口 - 在
service包中创建服务类 - 在
controller包中创建控制器 - 在
dto包中创建 DTO 类(如需要)
权限控制
- 不需要认证的接口在
InterceptorConfig中配置excludePathPatterns - 需要特定角色的路由在数据库
sys_route表的roles字段配置
注意事项
- 生产环境请修改 JWT 密钥(
application.yml中的jwt.secret) - 生产环境请使用加密的密码存储(建议使用 BCrypt)
- 建议配置日志输出到文件
- 建议添加全局异常处理
- 建议添加接口限流和防重放攻击
License
MIT