259 lines
6.8 KiB
Markdown
259 lines
6.8 KiB
Markdown
# Spring Boot 后端配置指南
|
||
|
||
## 已完成的工作
|
||
|
||
我已经为你创建了一个完整的 Spring Boot 后端项目,包含以下功能:
|
||
|
||
### ✅ 实现的接口
|
||
|
||
1. **认证接口**
|
||
- `POST /auth/login` - 用户登录
|
||
- `GET /auth/getUserInfo` - 获取用户信息
|
||
- `POST /auth/refreshToken` - 刷新令牌
|
||
- `GET /auth/error` - 自定义错误
|
||
|
||
2. **路由接口**
|
||
- `GET /route/getConstantRoutes` - 获取常量路由
|
||
- `GET /route/getUserRoutes` - 获取用户路由
|
||
- `GET /route/isRouteExist` - 检查路由是否存在
|
||
|
||
### 📁 项目结构
|
||
|
||
```
|
||
backend/
|
||
├── pom.xml # Maven 配置
|
||
├── src/main/
|
||
│ ├── java/com/soybean/admin/
|
||
│ │ ├── SoybeanAdminApplication.java # 启动类
|
||
│ │ ├── common/
|
||
│ │ │ └── Result.java # 统一响应格式
|
||
│ │ ├── config/
|
||
│ │ │ ├── WebConfig.java # Web 配置(CORS)
|
||
│ │ │ └── InterceptorConfig.java # 拦截器配置
|
||
│ │ ├── controller/
|
||
│ │ │ ├── AuthController.java # 认证控制器
|
||
│ │ │ └── RouteController.java # 路由控制器
|
||
│ │ ├── dto/ # 数据传输对象
|
||
│ │ ├── entity/
|
||
│ │ │ ├── User.java # 用户实体
|
||
│ │ │ └── Route.java # 路由实体
|
||
│ │ ├── exception/
|
||
│ │ │ └── GlobalExceptionHandler.java # 全局异常处理
|
||
│ │ ├── interceptor/
|
||
│ │ │ └── AuthInterceptor.java # JWT 认证拦截器
|
||
│ │ ├── mapper/
|
||
│ │ │ ├── UserMapper.java # 用户 Mapper
|
||
│ │ │ └── RouteMapper.java # 路由 Mapper
|
||
│ │ ├── service/
|
||
│ │ │ ├── AuthService.java # 认证服务
|
||
│ │ │ └── RouteService.java # 路由服务
|
||
│ │ └── util/
|
||
│ │ └── JwtUtil.java # JWT 工具类
|
||
│ └── resources/
|
||
│ ├── application.yml # 应用配置
|
||
│ └── sql/
|
||
│ └── init.sql # 数据库初始化脚本
|
||
├── start.bat # Windows 启动脚本
|
||
└── README.md # 项目说明文档
|
||
```
|
||
|
||
## 🚀 启动步骤
|
||
|
||
### 1. 初始化数据库
|
||
|
||
```bash
|
||
# 方式一:使用 MySQL 命令行
|
||
mysql -u root -p < backend/src/main/resources/sql/init.sql
|
||
|
||
# 方式二:登录 MySQL 后执行
|
||
mysql -u root -p
|
||
source backend/src/main/resources/sql/init.sql
|
||
```
|
||
|
||
这将创建:
|
||
- 数据库:`soybean_admin`
|
||
- 表:`sys_user`(用户表)、`sys_route`(路由表)
|
||
- 默认用户:
|
||
- 管理员:admin / admin123
|
||
- 普通用户:user / user123
|
||
|
||
### 2. 启动后端服务
|
||
|
||
```bash
|
||
# 进入后端目录
|
||
cd backend
|
||
|
||
# 方式一:使用 Maven 启动
|
||
mvn spring-boot:run
|
||
|
||
# 方式二:Windows 双击启动脚本
|
||
start.bat
|
||
|
||
# 方式三:编译后运行
|
||
mvn clean package
|
||
java -jar target/soybean-admin-backend-1.0.0.jar
|
||
```
|
||
|
||
服务将在 `http://localhost:8080` 启动。
|
||
|
||
### 3. 配置前端连接后端
|
||
|
||
修改前端项目的环境配置文件:
|
||
|
||
**`.env.test`** (开发环境)
|
||
```env
|
||
# 将 Mock 地址改为本地后端地址
|
||
VITE_SERVICE_BASE_URL=http://localhost:8080
|
||
```
|
||
|
||
**`.env.prod`** (生产环境)
|
||
```env
|
||
# 生产环境后端地址
|
||
VITE_SERVICE_BASE_URL=http://localhost:8080
|
||
```
|
||
|
||
### 4. 启动前端项目
|
||
|
||
```bash
|
||
# 安装依赖(如果还没安装)
|
||
pnpm install
|
||
|
||
# 启动开发服务器
|
||
pnpm dev
|
||
```
|
||
|
||
## 🧪 测试接口
|
||
|
||
### 使用 curl 测试登录
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8080/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"userName\":\"admin\",\"password\":\"admin123\"}"
|
||
```
|
||
|
||
预期响应:
|
||
```json
|
||
{
|
||
"code": "0000",
|
||
"msg": "success",
|
||
"data": {
|
||
"token": "eyJhbGc...",
|
||
"refreshToken": "eyJhbGc..."
|
||
}
|
||
}
|
||
```
|
||
|
||
### 使用 token 获取用户信息
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8080/auth/getUserInfo \
|
||
-H "Authorization: Bearer YOUR_TOKEN_HERE"
|
||
```
|
||
|
||
## 📊 数据库表结构
|
||
|
||
### sys_user (用户表)
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | BIGINT | 主键 |
|
||
| user_id | VARCHAR(50) | 用户ID |
|
||
| user_name | VARCHAR(50) | 用户名 |
|
||
| password | VARCHAR(100) | 密码 |
|
||
| roles | VARCHAR(200) | 角色(逗号分隔) |
|
||
| buttons | VARCHAR(500) | 按钮权限(逗号分隔) |
|
||
| status | INT | 状态:1-启用,2-禁用 |
|
||
| deleted | INT | 删除标记 |
|
||
| create_time | DATETIME | 创建时间 |
|
||
| update_time | DATETIME | 更新时间 |
|
||
|
||
### sys_route (路由表)
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | BIGINT | 主键 |
|
||
| route_id | VARCHAR(50) | 路由ID |
|
||
| name | VARCHAR(50) | 路由名称 |
|
||
| path | VARCHAR(200) | 路由路径 |
|
||
| component | VARCHAR(200) | 组件路径 |
|
||
| meta | TEXT | 元信息(JSON) |
|
||
| roles | VARCHAR(200) | 可访问角色 |
|
||
| order_num | INT | 排序号 |
|
||
| status | INT | 状态 |
|
||
| deleted | INT | 删除标记 |
|
||
| create_time | DATETIME | 创建时间 |
|
||
| update_time | DATETIME | 更新时间 |
|
||
|
||
## 🔐 默认账号
|
||
|
||
| 用户名 | 密码 | 角色 | 权限 |
|
||
|--------|------|------|------|
|
||
| admin | admin123 | R_SUPER, R_ADMIN | 所有权限 |
|
||
| user | user123 | R_USER | 查看权限 |
|
||
|
||
## ⚙️ 配置说明
|
||
|
||
### JWT 配置
|
||
在 `application.yml` 中:
|
||
```yaml
|
||
jwt:
|
||
secret: soybean-admin-secret-key-2024-spring-boot-jwt-token
|
||
expiration: 7200000 # 2小时
|
||
refresh-expiration: 604800000 # 7天
|
||
```
|
||
|
||
### 数据库配置
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
url: jdbc:mysql://localhost:3306/soybean_admin
|
||
username: root
|
||
password: root
|
||
```
|
||
|
||
## 🎯 下一步
|
||
|
||
1. **添加新菜单**:在数据库 `sys_route` 表中插入新路由
|
||
2. **添加新用户**:在数据库 `sys_user` 表中插入新用户
|
||
3. **权限控制**:通过 `roles` 字段控制路由访问权限
|
||
4. **密码加密**:建议在生产环境使用 BCrypt 加密密码
|
||
|
||
## ❗ 注意事项
|
||
|
||
1. **生产环境**:
|
||
- 修改 JWT 密钥
|
||
- 使用密码加密(BCrypt)
|
||
- 配置 HTTPS
|
||
- 添加日志文件输出
|
||
- 配置数据库连接池
|
||
|
||
2. **开发环境**:
|
||
- 确保 MySQL 服务已启动
|
||
- 确保端口 8080 未被占用
|
||
- 检查 Java 版本(需要 JDK 17+)
|
||
|
||
## 🐛 常见问题
|
||
|
||
### 1. 端口被占用
|
||
修改 `application.yml` 中的端口:
|
||
```yaml
|
||
server:
|
||
port: 8081
|
||
```
|
||
|
||
### 2. 数据库连接失败
|
||
检查 MySQL 服务是否启动,用户名密码是否正确。
|
||
|
||
### 3. Maven 依赖下载慢
|
||
配置国内镜像源(阿里云)。
|
||
|
||
## 📞 技术支持
|
||
|
||
如有问题,请查看:
|
||
- `backend/README.md` - 详细文档
|
||
- 日志输出 - 查看错误信息
|
||
- MySQL 日志 - 检查数据库问题
|
||
|
||
---
|
||
|
||
现在你可以开始使用完整的前后端分离系统了!🎉
|