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安全, 后端开发, 安全加固, 宠物健康追踪, 宠物护理系统, 开源项目, 毕业设计, 漏洞验证, 蓝队分析, 角色访问控制, 课程项目