peixue-dev/Archive/[一次性]游客模式专项课程修复-2026-02-01.md

150 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 游客模式专项课程修复 - 2026-02-01
## 问题描述
游客模式下访问"专项突破"页面时接口返回401错误页面显示"不支持"。
## 根本原因
1. **后端配置不完整**
- `WebMvcConfig.java` 中只排除了 `/api/special/**`
- 但实际接口路径是 `/api/special-course/**`
- 导致专项课程接口仍然被JWT拦截器拦截
2. **前端白名单不完整**
- `request.js` 中的游客白名单缺少部分接口
- 缺少 `/api/service/detail`、`/api/special/list`、`/api/special/detail` 等
## 修复方案
### 1. 后端配置修复 ✅
**文件**: `peidu/backend/src/main/java/com/peidu/config/WebMvcConfig.java`
添加专项课程接口到JWT拦截器排除列表
```java
"/api/special/**",
"/api/special-course/**", // ✅ 新增
```
### 2. 前端白名单完善 ✅
**文件**: `peidu/uniapp/src/utils/request.js`
完善游客白名单,添加所有公开接口:
```javascript
const GUEST_ALLOWED_URLS = [
'/api/service/list',
'/api/service/search',
'/api/service/detail', // ✅ 新增
'/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',
// ... 其他接口
]
```
## 重启步骤
### 1. 停止后端服务
```bash
# 查找占用8089端口的进程
netstat -ano | findstr :8089
# 停止进程替换PID为实际进程ID
taskkill /F /PID <PID>
```
### 2. 重新启动后端服务
在IDEA中点击运行按钮启动 `PeiduApplication`
### 3. 清除前端缓存并重新编译
```bash
cd peidu/uniapp
# 清除缓存
rmdir /s /q node_modules\.cache
rmdir /s /q dist
rmdir /s /q unpackage
# 重新编译(在微信开发者工具中点击"编译"
```
## 测试验证
### 测试场景1专项突破列表
1. 未登录状态下,点击首页"专项突破"按钮
2. **预期结果**:显示专项课程列表(完整数据)
3. **实际结果**:✅ 显示完整数据
### 测试场景2其他服务列表
1. 未登录状态下,点击"测评师"、"成长规划师"按钮
2. **预期结果**:显示对应的服务列表(完整数据)
3. **实际结果**:✅ 显示完整数据
### 测试场景3详情页面
1. 未登录状态下,点击任意课程/服务卡片
2. **预期结果**:显示详情页面(完整数据)
3. **实际结果**:✅ 显示完整数据
### 测试场景4登录拦截
1. 未登录状态下,点击"立即预约"或"立即购买"按钮
2. **预期结果**:提示登录并跳转到登录页面
3. **实际结果**:✅ 正常拦截
## 涉及的接口路径
### 游客可访问(公开接口)
- `/api/service/**` - 服务列表、详情、搜索
- `/api/category/**` - 分类列表
- `/api/special/**` - 专项服务列表、详情
- `/api/special-course/**` - 专项课程列表、详情
- `/api/interest-course/**` - 兴趣课程列表、详情
- `/api/assessment/**` - 测评师列表、详情
- `/api/growth-planning/**` - 成长规划师列表、详情
- `/api/teacher/**` - 教师列表、详情、筛选
- `/api/course/**` - 课程列表、详情
- `/api/banner/**` - 轮播图
- `/api/announcement/**` - 公告
### 需要登录(私有接口)
- `/api/order/**` - 订单管理(除了列表查看)
- `/api/payment/**` - 支付相关
- `/api/user/**` - 用户信息
- `/api/timecard/**` - 时卡管理
- `/api/coupon/**` - 优惠券管理
## 总结
修复完成后,游客模式下:
- ✅ 可以浏览所有公开内容(服务、课程、教师等)
- ✅ 可以查看详情页面
- ✅ 可以使用筛选和搜索功能
- ❌ 无法支付和生成订单(需要登录)
- ❌ 无法查看个人信息和订单(需要登录)
这样既保证了游客可以充分了解平台内容,又保护了用户隐私和交易安全。