peixue-dev/Archive/[一次性]游客模式完整修复总结-2026-02-01.md

6.1 KiB
Raw Blame History

游客模式完整修复总结 - 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拦截器排除列表中添加

"/api/special/**",
"/api/special-course/**",      // ✅ 新增 - 专项突破课程
"/api/interest/**",
"/api/interest-course/**",     // ✅ 新增 - 兴趣培养课程

2. 前端白名单(已完善)

文件: peidu/uniapp/src/utils/request.js

游客白名单已包含所有公开接口:

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. 停止后端服务

# 查找占用8089端口的进程
netstat -ano | findstr :8089

# 停止进程
taskkill /F /PID <PID>

2. 重新启动后端服务

在IDEA中点击运行按钮启动 PeiduApplication

3. 清除前端缓存并重新编译

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. 自动化测试 - 添加游客模式的自动化测试用例