# Spring-Boot-Server
**Repository Path**: My_AK_Dream/spring-boot-server
## Basic Information
- **Project Name**: Spring-Boot-Server
- **Description**: Sprint-Boot服务器
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-27
- **Last Updated**: 2026-01-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Spring Boot 认证系统 - 完整项目结构
## 📁 项目目录结构
```
auth-demo/
├── src/
│ ├── main/
│ │ ├── java/com/example/authdemo/
│ │ │ ├── AuthDemoApplication.java # 主应用类
│ │ │ │
│ │ │ ├── config/ # 配置类
│ │ │ │ ├── SecurityConfig.java # Spring Security配置
│ │ │ │ └── DataInitializer.java # 数据初始化
│ │ │ │
│ │ │ ├── controller/ # 控制器
│ │ │ │ └── ApiController.java # REST API接口
│ │ │ │
│ │ │ ├── dto/ # 数据传输对象
│ │ │ │ ├── LoginRequest.java # 登录请求
│ │ │ │ ├── LoginResponse.java # 登录响应
│ │ │ │ ├── RegisterRequest.java # 注册请求
│ │ │ │ ├── UserResponse.java # 用户响应
│ │ │ │ ├── ChangePasswordRequest.java # 修改密码请求
│ │ │ │ ├── UpdateUserRequest.java # 更新用户请求
│ │ │ │ └── ApiResponse.java # 统一响应格式
│ │ │ │
│ │ │ ├── entity/ # JPA实体
│ │ │ │ └── UserEntity.java # 用户实体
│ │ │ │
│ │ │ ├── filter/ # 过滤器
│ │ │ │ └── JwtAuthenticationFilter.java # JWT认证过滤器
│ │ │ │
│ │ │ ├── repository/ # 数据访问层
│ │ │ │ └── UserRepository.java # 用户Repository
│ │ │ │
│ │ │ ├── service/ # 业务逻辑层
│ │ │ │ ├── AuthService.java # 认证服务
│ │ │ │ └── UserService.java # 用户服务
│ │ │ │
│ │ │ └── util/ # 工具类
│ │ │ └── JwtUtil.java # JWT工具类
│ │ │
│ │ └── resources/
│ │ ├── application.yml # MySQL配置
│ │ └── application-h2.yml # H2配置(测试用)
│ │
│ └── test/ # 测试代码
│
├── pom.xml # Maven依赖配置
└── README.md # 项目说明
```
---
## 🏗️ 架构层次
```mermaid
sequenceDiagram
title Spring Boot三层架构处理时序图(以登录为例)
participant Client as 客户端 (Client)
participant Controller as Controller Layer
participant Service as Service Layer
participant Repository as Repository Layer
participant Database as Database
Note over Client, Database: 登录请求处理流程
Client->>Controller: POST /api/auth/login
{username, password}
activate Controller
Controller->>Controller: 1. 参数校验
(@Valid)
Controller->>Service: 2. 调用登录方法
login(request)
deactivate Controller
activate Service
Service->>Service: 3. 处理业务逻辑
- 验证用户名密码
- 生成Token
Service->>Repository: 4. 查询用户
findByUsername(username)
deactivate Service
activate Repository
Repository->>Database: SELECT ... FROM users WHERE ...
Database-->>Repository: 用户数据
Repository-->>Service: 返回User实体
deactivate Repository
activate Service
Service-->>Controller: 返回LoginResponse对象
deactivate Service
activate Controller
Controller-->>Client: HTTP 200
{token, userInfo}
deactivate Controller
```
---
## 🔄 请求处理流程
### 1. 登录流程
```mermaid
sequenceDiagram
title 用户登录认证序列图
participant Client as Client
participant ApiController as ApiController
participant AuthService as AuthService
participant UserService as UserService
participant JwtUtil as JwtUtil
Client->>ApiController: POST /api/auth/login
{username, password}
activate ApiController
ApiController->>AuthService: login(request)
activate AuthService
AuthService->>UserService: findByUsername(username)
activate UserService
UserService-->>AuthService: UserEntity
deactivate UserService
AuthService->>AuthService: verifyPassword()
AuthService->>JwtUtil: generateToken(user)
activate JwtUtil
JwtUtil-->>AuthService: token
deactivate JwtUtil
AuthService-->>ApiController: LoginResponse
deactivate AuthService
ApiController-->>Client: {token, username, role}
deactivate ApiController
```
### 2. 认证流程
```mermaid
sequenceDiagram
title 客户端-服务器身份验证交互序列图
participant Client as Client
participant Filter as JwtAuthenticationFilter
participant Controller as ApiController
participant Service as 业务服务
Client->>Filter: GET /api/user/profile
Header: Authorization: Bearer token
Note over Filter: 步骤1: 提取Token
Filter->>Filter: JwtUtil.validateToken()
Note over Filter: 步骤2: 验证Token有效性
并设置Security上下文
Filter->>Controller: 转发请求
Note over Controller: 步骤3: 检查权限
Controller->>Service: 调用业务方法
Service-->>Controller: 返回用户数据
Controller-->>Client: {user data}
```
---
## 🔑 核心组件说明
### 1. **SecurityConfig**
- 配置哪些URL需要认证
- 配置角色权限
- 添加JWT过滤器到过滤链
### 2. **JwtAuthenticationFilter**
- 拦截所有HTTP请求
- 从请求头提取JWT Token
- 验证Token并设置认证信息
### 3. **JwtUtil**
- 生成JWT Token
- 验证Token有效性
- 提取Token中的用户信息
### 4. **UserService**
- 用户CRUD操作
- 密码加密和验证
- 业务逻辑处理
### 5. **AuthService**
- 处理登录逻辑
- Token生成和验证
- 认证相关的业务逻辑
### 6. **UserRepository**
- JPA数据访问接口
- 自动生成SQL查询
- 提供数据库操作方法
---
## 📊 数据库关系
```sql
┌─────────────────────────────┐
│ users │
├─────────────────────────────┤
│ id (PK) BIGINT │
│ username VARCHAR(50) │ ← UNIQUE
│ password VARCHAR(255)│ ← BCrypt加密
│ role VARCHAR(20) │ ← ADMIN/USER
│ email VARCHAR(100)│
│ enabled BOOLEAN │
│ created_at TIMESTAMP │
│ updated_at TIMESTAMP │
└─────────────────────────────┘
```
---
## 🛡️ 安全机制
1. **密码加密**: BCrypt (强度10)
2. **JWT签名**: HMAC-SHA256
3. **Token过期**: 24小时
4. **角色验证**: Spring Security RBAC
5. **CSRF保护**: 禁用(因为使用JWT)
6. **会话管理**: 无状态(Stateless)
---
## 🎯 API端点总览
| 方法 | 路径 | 权限 | 说明 |
| ------ | ----------------------------------- | ----- | ------------- |
| POST | /api/auth/login | 公开 | 用户登录 |
| POST | /api/auth/register | 公开 | 用户注册 |
| GET | /api/public/hello | 公开 | 公开接口 |
| GET | /api/user/profile | USER+ | 获取个人信息 |
| PUT | /api/user/profile | USER+ | 更新个人信息 |
| POST | /api/user/change-password | USER+ | 修改密码 |
| GET | /api/user/data | USER+ | 用户数据 |
| GET | /api/admin/dashboard | ADMIN | 管理员仪表板 |
| GET | /api/admin/users | ADMIN | 获取所有用户 |
| GET | /api/admin/users/{id} | ADMIN | 获取指定用户 |
| POST | /api/admin/users | ADMIN | 创建用户 |
| PUT | /api/admin/users/{id}/toggle-status | ADMIN | 禁用/启用用户 |
| DELETE | /api/admin/users/{id} | ADMIN | 删除用户 |
---
## 🚀 快速命令
```bash
# 编译项目
mvn clean install
# 运行(MySQL)
mvn spring-boot:run
# 运行(H2测试)
mvn spring-boot:run -Dspring-boot.run.profiles=h2
# 打包
mvn clean package
# 运行jar
java -jar target/auth-demo-1.0.0.jar
```
---
## ✅ 已实现功能清单
- ✅ JWT Token认证
- ✅ 用户登录/注册
- ✅ 角色权限控制 (ADMIN/USER)
- ✅ 密码加密存储 (BCrypt)
- ✅ 数据库持久化 (MySQL/H2)
- ✅ 用户信息管理
- ✅ 密码修改
- ✅ 用户启用/禁用
- ✅ 管理员用户管理
- ✅ 统一响应格式
- ✅ 自动数据初始化
---
## 学习要点
1. **Spring Security**: 理解认证和授权的区别
2. **JWT**: 无状态认证的优势
3. **JPA**: ORM映射和Repository模式
4. **RESTful API**: 符合REST规范的接口设计
5. **分层架构**: Controller-Service-Repository
6. **依赖注入**: Spring的核心概念
7. **事务管理**: @Transactional的使用