重要提醒

⚠️ 请勿公开你的代码 - 本课程遵循学术诚信原则,代码仅供个人学习使用。


概述

本课程所有代码基于 Java 编写。在开始项目之前,请确保你具备以下基础:

  • Java SE 基础:面向对象编程、集合框架、异常处理
  • Java Web 基础:Spring Boot、Spring MVC、RESTful API
  • 数据库基础:SQL 基本操作、MyBatis 使用
  • 缓存基础:Redis 基本概念和操作

本项目严格按照 OAuth 2.0 协议标准实现,主要基于授权码模式(Authorization Code Flow)。

必读材料

在开始实验前,请仔细阅读以下材料:

  1. OAuth 2.0 核心概念

  2. 授权码模式深入理解

    • 重点关注:授权请求、授权响应、令牌请求、令牌响应的完整流程
  3. 安全增强特性


你的任务

本实验采用**“完形填空”**的形式:

  1. 理解项目架构:阅读提供的框架代码,理解各模块的职责
  2. 完成关键函数:在标记了 // TODO 的地方实现核心逻辑
  3. 通过单元测试:每个实验都配有 JUnit 测试用例
  4. 手动测试验证:使用 Postman 或其他工具进行端到端测试

实验评估方式

  • 自动化测试:每个模块都有对应的单元测试(约 60%)
  • 功能验证:手动测试关键流程(约 30%)
  • 代码质量:代码规范性和安全性(约 10%)

重要提醒:本项目没有完全自动化的评分系统,请以学到知识为目标,诚信完成实验。


编程环境准备

1. 阅读实验网站

浏览以下内容:

  • ✅ Project 1:环境搭建与系统设计
  • ✅ 实验概述和总体架构
  • ✅ 参考资料和拓展阅读

2. 配置开发环境

确保你的环境包含以下工具:

工具 版本要求 用途
JDK 17+ Java 运行环境
Maven 3.8+ 项目构建工具
MySQL 8.0+ 关系数据库
Redis 6.0+ 缓存服务器
IntelliJ IDEA 最新版 推荐 IDE
Git 最新版 版本控制
Postman 最新版 API 测试工具

环境验证清单

  • 能够编译和运行 Spring Boot 项目
  • 能够连接 MySQL 数据库
  • 能够连接 Redis 服务器
  • 能够使用调试器设置断点
  • 能够运行 JUnit 测试用例

3. 跨平台注意事项

本项目理论上跨平台兼容(Windows、Linux、macOS),但存在一些已知问题:

  • Windows:路径分隔符使用 \,注意配置文件中的路径
  • macOS:部分依赖需要使用 Homebrew 安装
  • Linux:推荐使用 Ubuntu 20.04+ 或类似发行版

如遇 macOS 特定问题,请在 GitHub Issues 中提问。


学习建议

遇到问题时的解决流程

1. 仔细阅读错误信息和堆栈跟踪
   ↓
2. 检查自己的代码逻辑(特别是"想当然"的部分)
   ↓
3. 查阅官方文档(Spring Boot、MyBatis、Redis 等)
   ↓
4. 使用搜索引擎(推荐 Google、Stack Overflow)
   ↓
5. 尝试 AI 辅助工具(ChatGPT、GitHub Copilot 等)
   ↓
6. 在 GitHub Issues 提问(附上详细的错误信息和尝试过的方法)

高效提问的技巧

不推荐的提问方式

"我的代码不能运行,怎么办?"

推荐的提问方式

"我在实现 LocalTokenManager.refresh() 方法时遇到了空指针异常。
我已经检查了缓存初始化代码,并尝试了以下方法:
1. 在 refresh 方法开始处添加了空值检查
2. 确认了构造函数中缓存已正确初始化

错误堆栈信息如下:
[粘贴完整的堆栈跟踪]

测试代码:
[粘贴相关测试代码]

请问可能是什么原因?"

核心原则

  1. 机器永远是对的:编译器和测试框架的错误提示是宝贵的调试信息
  2. 先理解再实现:不要盲目复制代码,理解每一行的作用
  3. 小步快跑:每完成一个小功能就运行测试,不要积累太多未测试的代码
  4. 善用调试器:学会使用断点、单步执行、变量监视等调试技巧
  5. 阅读源码:遇到框架问题时,尝试阅读 Spring Boot 的源码

获取帮助

GitHub Issues

在项目仓库提交 Issue 时,请包含以下信息:

  1. 问题描述:简洁明了地说明问题
  2. 复现步骤:如何触发该问题
  3. 预期行为:你期望发生什么
  4. 实际行为:实际发生了什么
  5. 环境信息:操作系统、JDK 版本、IDE 版本等
  6. 错误日志:完整的错误堆栈信息
  7. 已尝试方法:你已经尝试过哪些解决方案

讨论区

对于一般性问题(如概念理解、最佳实践等),可以在 GitHub Discussions 中讨论。


预期收获

完成本课程后,你将:

✅ 深入理解 OAuth 2.0 授权框架
✅ 掌握单点登录(SSO)的实现原理
✅ 学会设计安全的认证和授权系统
✅ 掌握 JWT、Token 管理等关键技术
✅ 提升 Spring Boot 企业级应用开发能力
✅ 培养阅读规范文档(RFC)的能力

预计学习时间:每周 8-12 小时,共 6 周


祝你学习顺利!有问题随时在 GitHub 上提 Issue。