223 lines
5.4 KiB
Markdown
223 lines
5.4 KiB
Markdown
# 游客模式测试指南 - 2026-02-01
|
||
|
||
## 修复完成状态
|
||
|
||
✅ **后端服务**: 已重新编译并启动 (端口: 8089)
|
||
✅ **前端小程序**: 已清除缓存并重新编译完成
|
||
|
||
## 测试准备
|
||
|
||
### 1. 确保服务正常运行
|
||
|
||
**后端服务检查**:
|
||
- 访问: http://localhost:8089/api
|
||
- 应该看到服务正常响应
|
||
|
||
**前端小程序**:
|
||
- 在微信开发者工具中打开: `peidu/uniapp/dist/dev/mp-weixin`
|
||
- 点击"清缓存" → "清除全部缓存"
|
||
- 点击"编译" → "清除缓存并重新编译"
|
||
|
||
### 2. 进入游客模式
|
||
|
||
**方法1**: 退出登录
|
||
- 进入"我的"页面
|
||
- 点击"退出登录"
|
||
|
||
**方法2**: 清除本地存储
|
||
- 在微信开发者工具的控制台执行:
|
||
```javascript
|
||
uni.removeStorageSync('token')
|
||
uni.removeStorageSync('userInfo')
|
||
```
|
||
|
||
**验证游客模式**:
|
||
- 控制台执行: `uni.getStorageSync('token')`
|
||
- 应该返回空字符串或undefined
|
||
|
||
## 测试场景
|
||
|
||
### 场景1: 选择陪伴员页面
|
||
|
||
**路径**: 首页 → 选择陪伴员
|
||
|
||
**测试步骤**:
|
||
1. 点击首页的"选择陪伴员"按钮
|
||
2. 进入教师列表页面
|
||
|
||
**预期结果**:
|
||
- ✅ 页面正常显示教师列表
|
||
- ✅ 可以看到教师的头像、姓名、标签、简介、评分、价格等信息
|
||
- ✅ 可以使用筛选功能(科目、区域、年级、排序)
|
||
- ✅ 控制台没有401错误
|
||
- ✅ 没有"登录已过期"弹窗
|
||
|
||
**点击"立即预约"**:
|
||
- ✅ 应该提示需要登录
|
||
- ✅ 跳转到登录页面
|
||
|
||
### 场景2: 兴趣培养页面
|
||
|
||
**路径**: 首页 → 兴趣培养
|
||
|
||
**测试步骤**:
|
||
1. 点击首页的"兴趣培养"按钮
|
||
2. 进入兴趣课程列表页面
|
||
|
||
**预期结果**:
|
||
- ✅ 页面正常显示课程列表
|
||
- ✅ 可以看到课程的图片、标题、价格等信息
|
||
- ✅ 可以浏览课程详情
|
||
- ✅ 控制台没有401错误
|
||
- ✅ 没有"登录已过期"弹窗
|
||
|
||
**点击"立即购买"**:
|
||
- ✅ 应该提示需要登录
|
||
- ✅ 跳转到登录页面
|
||
|
||
### 场景3: 专项突破页面
|
||
|
||
**路径**: 首页 → 专项突破
|
||
|
||
**测试步骤**:
|
||
1. 点击首页的"专项突破"按钮
|
||
2. 进入专项课程列表页面
|
||
|
||
**预期结果**:
|
||
- ✅ 页面正常显示课程列表
|
||
- ✅ 可以看到课程的图片、标题、价格等信息
|
||
- ✅ 可以浏览课程详情
|
||
- ✅ 控制台没有401错误
|
||
- ✅ 没有"登录已过期"弹窗
|
||
|
||
**点击"立即购买"**:
|
||
- ✅ 应该提示需要登录
|
||
- ✅ 跳转到登录页面
|
||
|
||
### 场景4: 服务列表页面
|
||
|
||
**路径**: 首页 → 服务列表
|
||
|
||
**测试步骤**:
|
||
1. 点击首页的"服务列表"按钮
|
||
2. 进入服务列表页面
|
||
|
||
**预期结果**:
|
||
- ✅ 页面正常显示服务列表
|
||
- ✅ 可以看到服务的图片、标题、价格等信息
|
||
- ✅ 可以浏览服务详情
|
||
- ✅ 控制台没有401错误
|
||
- ✅ 没有"登录已过期"弹窗
|
||
|
||
**点击"立即预约"**:
|
||
- ✅ 应该提示需要登录
|
||
- ✅ 跳转到登录页面
|
||
|
||
## 控制台检查
|
||
|
||
### 正常的日志
|
||
|
||
**前端**:
|
||
```
|
||
[Request] 当前环境: 生产环境
|
||
[Request] BASE_URL: https://px.ddn-ai.cloud
|
||
[Request] 游客模式,白名单接口返回401,静默失败,不影响页面显示: /api/teacher/list
|
||
```
|
||
|
||
**后端**:
|
||
```
|
||
=== JWT拦截器执行 ===
|
||
请求路径: /api/teacher/list
|
||
Authorization Header: null
|
||
token为空,放行请求
|
||
=== JWT拦截器执行完成 ===
|
||
```
|
||
|
||
### 不应该出现的错误
|
||
|
||
❌ **前端控制台**:
|
||
- "登录已过期"
|
||
- "token已过期"
|
||
- 401错误弹窗
|
||
|
||
❌ **后端日志**:
|
||
- "token验证失败"
|
||
- "不存在"异常
|
||
|
||
## 登录后测试
|
||
|
||
### 测试登录功能
|
||
|
||
**步骤**:
|
||
1. 在游客模式下点击"立即预约"或"立即购买"
|
||
2. 跳转到登录页面
|
||
3. 输入账号密码登录
|
||
|
||
**预期结果**:
|
||
- ✅ 登录成功后跳转到首页
|
||
- ✅ 可以正常使用所有功能
|
||
- ✅ 可以提交订单和支付
|
||
|
||
### 验证已登录用户功能
|
||
|
||
**测试**:
|
||
1. 浏览教师列表 - 应该正常显示
|
||
2. 点击"立即预约" - 应该进入预约页面(不提示登录)
|
||
3. 提交订单 - 应该正常提交
|
||
4. 查看订单列表 - 应该显示自己的订单
|
||
|
||
## 问题排查
|
||
|
||
### 如果页面仍然显示401错误
|
||
|
||
**检查1**: 后端服务是否重启
|
||
```bash
|
||
# 检查Java进程
|
||
tasklist | findstr java
|
||
```
|
||
|
||
**检查2**: 前端缓存是否清除
|
||
- 在微信开发者工具中点击"清缓存" → "清除全部缓存"
|
||
- 重新编译
|
||
|
||
**检查3**: 查看后端日志
|
||
- 检查JWT拦截器是否输出"token为空,放行请求"
|
||
|
||
**检查4**: 查看前端请求
|
||
- 打开控制台Network标签
|
||
- 查看请求是否发送token
|
||
- 游客模式下不应该发送token
|
||
|
||
### 如果页面空白
|
||
|
||
**检查1**: 后端是否返回数据
|
||
- 在浏览器中访问: http://localhost:8089/api/teacher/list
|
||
- 应该返回教师列表数据
|
||
|
||
**检查2**: 前端是否正确解析数据
|
||
- 查看控制台是否有JavaScript错误
|
||
- 查看Network标签中的响应数据
|
||
|
||
## 测试完成标准
|
||
|
||
所有以下条件都满足才算测试通过:
|
||
|
||
- [ ] 游客模式下选择陪伴员页面正常显示数据
|
||
- [ ] 游客模式下兴趣培养页面正常显示数据
|
||
- [ ] 游客模式下专项突破页面正常显示数据
|
||
- [ ] 游客模式下服务列表页面正常显示数据
|
||
- [ ] 控制台没有401错误
|
||
- [ ] 没有"登录已过期"弹窗
|
||
- [ ] 点击预约/购买时提示登录
|
||
- [ ] 登录后所有功能正常
|
||
- [ ] 已登录用户不受影响
|
||
|
||
## 总结
|
||
|
||
这次修复的核心是:
|
||
1. **后端**: JWT拦截器在没有token时直接放行,不抛出异常
|
||
2. **前端**: 游客模式访问白名单接口时401错误静默处理
|
||
3. **效果**: 游客可以浏览所有数据,但不能下单和支付
|
||
|
||
这样的设计符合现代Web应用的最佳实践,提供了良好的用户体验。
|