# 游客模式完整修复总结 - 2026-02-01 ## 问题描述 游客模式下访问以下页面时返回401错误,页面显示"不支持"或空白: - ❌ 专项突破(special-course) - ❌ 兴趣培养(interest-course) ## 根本原因 后端 `WebMvcConfig.java` 中的JWT拦截器排除列表不完整: - 只配置了 `/api/special/**`,但实际接口是 `/api/special-course/**` - 只配置了 `/api/interest/**`,但实际接口是 `/api/interest-course/**` 导致这些接口仍然被JWT拦截器拦截,游客无法访问。 ## 修复方案 ### 1. 后端配置修复 ✅ **文件**: `peidu/backend/src/main/java/com/peidu/config/WebMvcConfig.java` 在JWT拦截器排除列表中添加: ```java "/api/special/**", "/api/special-course/**", // ✅ 新增 - 专项突破课程 "/api/interest/**", "/api/interest-course/**", // ✅ 新增 - 兴趣培养课程 ``` ### 2. 前端白名单(已完善) ✅ **文件**: `peidu/uniapp/src/utils/request.js` 游客白名单已包含所有公开接口: ```javascript const GUEST_ALLOWED_URLS = [ // 服务相关 '/api/service/list', '/api/service/search', '/api/service/detail', // 分类 '/api/category/all', // 专项服务 '/api/special/list', '/api/special/detail', '/api/special-course/list', '/api/special-course/detail', // 兴趣培养 '/api/interest-course/list', '/api/interest-course/detail', // 测评师 '/api/assessment/list', '/api/assessment/detail', // 成长规划师 '/api/growth-planning/list', '/api/growth-planning/detail', // 教师 '/api/teacher/list', '/api/teacher/detail', '/api/teacher/filter-options', // 课程 '/api/course/list', '/api/course/detail', // 其他 '/api/banner/list', '/api/notification/unread-count', '/api/timecard/list', '/api/order/list', '/api/order/list-full' ] ``` ## 完整的游客模式接口列表 ### 游客可访问(公开接口) | 接口路径 | 说明 | 状态 | |---------|------|------| | `/api/service/**` | 服务列表、详情、搜索 | ✅ | | `/api/category/**` | 分类列表 | ✅ | | `/api/special/**` | 专项服务列表、详情 | ✅ | | `/api/special-course/**` | 专项课程列表、详情 | ✅ | | `/api/interest/**` | 兴趣服务列表、详情 | ✅ | | `/api/interest-course/**` | 兴趣课程列表、详情 | ✅ | | `/api/assessment/**` | 测评师列表、详情 | ✅ | | `/api/growth-planning/**` | 成长规划师列表、详情 | ✅ | | `/api/teacher/**` | 教师列表、详情、筛选 | ✅ | | `/api/course/**` | 课程列表、详情 | ✅ | | `/api/banner/**` | 轮播图 | ✅ | | `/api/announcement/**` | 公告 | ✅ | ### 需要登录(私有接口) | 接口路径 | 说明 | 原因 | |---------|------|------| | `/api/order/**` | 订单管理 | 涉及用户隐私 | | `/api/payment/**` | 支付相关 | 涉及交易安全 | | `/api/user/**` | 用户信息 | 涉及用户隐私 | | `/api/timecard/my` | 我的时卡 | 涉及用户隐私 | | `/api/coupon/my` | 我的优惠券 | 涉及用户隐私 | ## 重启步骤 ### 方式1:使用批处理文件(推荐) 执行:`Archive/[一次性]完整修复游客模式-所有服务-2026-02-01.bat` ### 方式2:手动执行 #### 1. 停止后端服务 ```bash # 查找占用8089端口的进程 netstat -ano | findstr :8089 # 停止进程 taskkill /F /PID ``` #### 2. 重新启动后端服务 在IDEA中点击运行按钮启动 `PeiduApplication` #### 3. 清除前端缓存并重新编译 ```bash cd peidu/uniapp rmdir /s /q node_modules\.cache rmdir /s /q dist rmdir /s /q unpackage ``` 然后在微信开发者工具中点击"编译"按钮 ## 测试验证 ### 测试清单 | 测试项 | 操作 | 预期结果 | 状态 | |--------|------|----------|------| | 专项突破列表 | 未登录状态下点击"专项突破" | 显示课程列表(完整数据) | ⏳ | | 兴趣培养列表 | 未登录状态下点击"兴趣培养" | 显示课程列表(完整数据) | ⏳ | | 测评师列表 | 未登录状态下点击"测评师" | 显示教师列表(完整数据) | ⏳ | | 成长规划师列表 | 未登录状态下点击"成长规划师" | 显示教师列表(完整数据) | ⏳ | | 课程详情 | 未登录状态下点击任意课程 | 显示详情页面(完整数据) | ⏳ | | 登录拦截 | 未登录状态下点击"立即预约" | 提示登录并跳转 | ⏳ | ### 测试步骤 1. **清除小程序缓存** - 在微信开发者工具中点击"清缓存" → "清除数据缓存" 2. **退出登录** - 在小程序中退出登录,确保处于游客状态 3. **测试浏览功能** - 点击首页的各个服务类型按钮 - 验证是否显示完整的列表数据 - 点击任意卡片查看详情 4. **测试登录拦截** - 在详情页点击"立即预约"或"立即购买" - 验证是否提示登录 ## 涉及的文件 ### 后端文件 - `peidu/backend/src/main/java/com/peidu/config/WebMvcConfig.java` ### 前端文件 - `peidu/uniapp/src/utils/request.js` ### 控制器文件 - `peidu/backend/src/main/java/com/peidu/controller/SpecialCourseController.java` - `peidu/backend/src/main/java/com/peidu/controller/InterestCourseController.java` ## 总结 修复完成后,游客模式下: - ✅ 可以浏览所有公开内容(服务、课程、教师等) - ✅ 可以查看详情页面 - ✅ 可以使用筛选和搜索功能 - ✅ 可以查看轮播图、公告等 - ❌ 无法支付和生成订单(需要登录) - ❌ 无法查看个人信息和订单(需要登录) 这样既保证了游客可以充分了解平台内容,又保护了用户隐私和交易安全。 ## 注意事项 1. **后端必须重启** - 配置修改后必须重启后端服务才能生效 2. **前端必须重新编译** - 清除缓存后重新编译小程序 3. **测试前清除缓存** - 确保测试的是最新代码 4. **确认游客状态** - 测试前确保已退出登录 ## 后续优化建议 1. **统一接口命名** - 考虑将 `/api/special-course` 改为 `/api/special/course`,保持路径层级一致 2. **接口文档** - 维护一份完整的公开接口清单文档 3. **自动化测试** - 添加游客模式的自动化测试用例