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