# 游客模式测试指南 - 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应用的最佳实践,提供了良好的用户体验。