admin/BACKEND_SETUP.md

259 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 日志 - 检查数据库问题
---
现在你可以开始使用完整的前后端分离系统了!🎉