mkkuu/securingPetpal
GitHub: mkkuu/securingPetpal
一个基于 Spring Boot 4 的宠物护理应用教学项目,用于学习互操作性和安全增强实践。
Stars: 0 | Forks: 0
# PetPal
一个基于 Spring Boot 4 项目构建的宠物护理与健康追踪器,提供 MVC 界面和 REST API。
## 技术栈
| 组件 | 版本 |
|---|---|
| Java | 25 |
| Spring Boot | 4.0.6 |
| Spring MVC / Spring Security | 7.x |
| Thymeleaf | 3.x |
| Spring Data JPA / Hibernate | 7.x |
| H2 (内存数据库) | 运行时 |
| Auth0 Java JWT | 4.4.0 |
| springdoc-openapi | 3.0.0 |
## 在 IntelliJ IDEA 中运行项目
1. **打开项目:** `File → Open` → 选择 `petpal` 文件夹
2. **SDK:** `File → Project Structure → SDK` → 设置为 **Java 25**
3. **Maven:** IntelliJ 会自动下载依赖;如果没有,请运行 **Reload Maven Project**
4. **运行:** `PetpalApplication.java` → 右键点击 → *Run*
5. **访问:** [http://localhost:8080](http://localhost:8080)
## 默认用户账户 (内存 H2)
| 用户名 | 密码 | 角色 |
|---|---|---|
| `admin` | `admin123` | ADMIN — 完全管理权限 |
| `user` | `user123` | USER — 仅限读取和搜索 |
## MVC 界面
| URL | 描述 | 访问权限 |
|---|---|---|
| `/` | 重定向到 `/pets` | — |
| `/auth/login` | 登录表单 | 公开 |
| `/auth/register` | 注册表单 | 公开 |
| `/pets` | 浏览和搜索宠物 | USER + ADMIN |
| `/pets/{id}` | 包含护理信息的宠物详情 | USER + ADMIN |
| `/pets/new` | 添加新宠物表单 | ADMIN |
| `/pets/edit/{id}` | 编辑宠物表单 | ADMIN |
| `/pets/delete/{id}` | 删除宠物 (POST) | ADMIN |
## REST API
Base URL: `/api`
### 身份验证
| 方法 | URL | 描述 |
|---|---|---|
| `POST` | `/api/auth/login` | 登录 — 返回访问令牌 + 刷新令牌 |
| `POST` | `/api/auth/register` | 注册一个新用户账户 |
| `POST` | `/api/auth/refresh` | 获取新的访问令牌 |
| `POST` | `/api/auth/logout` | 撤销刷新令牌 |
### 宠物 (需要 Bearer token)
| 方法 | URL | 描述 | 角色 |
|---|---|---|---|
| `GET` | `/api/pets` | 所有宠物 | USER + ADMIN |
| `GET` | `/api/pets/{id}` | 单个宠物 | USER + ADMIN |
| `GET` | `/api/pets/search` | 搜索 (`query`, `species`, `gender`, `activity`) | USER + ADMIN |
| `POST` | `/api/pets` | 添加新宠物 | ADMIN |
| `PUT` | `/api/pets/{id}` | 更新宠物 | ADMIN |
| `DELETE` | `/api/pets/{id}` | 删除宠物 | ADMIN |
### 示例:登录和 API 使用
```
# 登录
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
# 使用 access token 获取宠物
curl http://localhost:8080/api/pets \
-H "Authorization: Bearer "
```
## Swagger UI
访问地址:[http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html)
1. 使用 `admin` / `admin123` 调用 `POST /api/auth/login`
2. 从响应中复制 `accessToken`
3. 点击 **Authorize** (右上角) → 粘贴令牌
4. 使用任何受保护的端点
## H2 控制台
URL: [http://localhost:8080/h2-console](http://localhost:8080/h2-console)
| 字段 | 值 |
|---|---|
| JDBC URL | `jdbc:h2:mem:petpaldb` |
| 用户名 | `sa` |
| 密码 | *(留空)* |
## 主要功能
- **带倒计时的疫苗接种提醒** — 自动显示距离下次接种天数的横幅,逾期警告以红色高亮显示
- **智能年龄计算** — 使用 `ChronoUnit` 自动显示以年和月为单位的年龄,包括新生宠物的处理
- **基于物种的渐变头像** — 每个物种 (DOG, CAT, RABBIT, BIRD 等) 都有自己独特的颜色渐变和表情符号
- **护理状态网格** — 疫苗接种、绝育/去势状态和微芯片植入的可视化指示器
- **相伴时间计数器** — 自动显示您拥有该宠物多少天
- **支持 10 种物种** — 狗、猫、兔子、鸟、仓鼠、豚鼠、雪貂、爬行动物、鱼、其他
- **活动水平颜色编码** — 从 LOW (安静) 到 VERY_HIGH (精力充沛) 的可视化指示器
- **全面的兽医记录** — 兽医、诊所、微芯片号、过敏史和用药情况
- **喜好字段** — 记录每只宠物独特的偏好和个性
## 项目结构
```
flake.nix # Repo's configuration for NixOS
pom.xml # Central descriptor for Maven project
src/main/java/hr/algebra/petpal/
├── PetpalApplication.java
├── config/
│ ├── DataInitializer.java # 10 sample pets on startup
│ ├── OpenApiConfig.java # Swagger / OpenAPI configuration
│ └── SecurityConfig.java # Two filter chains (API + MVC)
├── controller/
│ ├── mvc/
│ │ ├── AuthMvcController.java
│ │ ├── HomeController.java
│ │ └── PetMvcController.java
│ └── rest/
│ ├── AuthRestController.java
│ └── PetRestController.java
├── dto/
│ ├── Dto.java # Login/Register/Token records
│ └── PetDto.java # Java record
├── entity/
│ ├── Pet.java
│ ├── RefreshToken.java
│ └── User.java # Implements UserDetails
├── enums/
│ ├── ActivityLevel.java
│ ├── PetGender.java
│ ├── Role.java
│ └── Species.java
├── repository/
│ ├── PetRepository.java
│ ├── RefreshTokenRepository.java
│ └── UserRepository.java
├── security/
│ ├── JwtAuthFilter.java
│ ├── JwtService.java
│ └── UserDetailsServiceImpl.java
└── service/
├── AuthService.java
├── PetService.java
└── RefreshTokenService.java
```
标签:Auth0 Java JWT, CISA项目, DNS解析, GitHub Advanced Security, H2数据库, Hibernate, Java 25, JPA, JS文件枚举, JWT认证, Maven, RBAC, REST API, Spring Boot 4, springdoc-openapi, Spring MVC, Spring Security, Thymeleaf, Web安全, 后端开发, 安全加固, 宠物健康追踪, 宠物护理系统, 开源项目, 毕业设计, 漏洞验证, 蓝队分析, 角色访问控制, 课程项目