# 后端游客模式配置说明 ## 当前配置状态 ### 1. Spring Security配置 **文件**: `peidu/backend/src/main/java/com/peidu/config/SecurityConfig.java` **配置内容**: ```java .authorizeRequests() // 放行所有接口(临时测试用) .anyRequest().permitAll() ``` **状态**: ✅ 已配置,所有接口都允许访问 ### 2. JWT拦截器排除路径 **文件**: `peidu/backend/src/main/java/com/peidu/config/WebMvcConfig.java` **已排除的路径**: ```java .excludePathPatterns( "/api/service/**", // ✅ 服务相关接口 "/api/category/**", // ✅ 分类相关接口 "/api/banner/**", // ✅ 轮播图接口 "/api/teacher/list", // ✅ 教师列表 "/api/teacher/detail/**", // ✅ 教师详情 ... ) ``` **状态**: ✅ 已配置,游客可以访问这些接口 ## 问题诊断 ### 可能的原因 1. **后端未重启** - 修改配置后需要重启后端服务 2. **缓存问题** - 可能有缓存导致配置未生效 3. **端口或URL错误** - 前端请求的URL可能不正确 ### 验证步骤 #### 1. 检查后端是否运行 ```bash # Windows netstat -ano | findstr :8080 # 或者查看进程 tasklist | findstr java ``` #### 2. 测试接口是否可以匿名访问 使用Postman或curl测试: ```bash # 测试服务分类接口(不带token) curl http://localhost:8080/api/category/all # 测试服务列表接口(不带token) curl http://localhost:8080/api/service/list?page=1&size=10 ``` **预期结果**: 应该返回数据,不应该返回401错误 #### 3. 检查前端请求的URL 查看浏览器控制台,确认请求的URL是否正确: - 应该是: `http://localhost:8080/api/category/all` - 不应该是其他端口或域名 ## 解决方案 ### 方案1: 重启后端服务(推荐) 1. 停止后端服务 2. 重新启动后端服务 3. 等待服务完全启动 4. 测试接口是否可以访问 ### 方案2: 确认配置已生效 检查后端启动日志,确认: 1. Spring Security配置已加载 2. WebMvcConfig配置已加载 3. 拦截器已注册 ### 方案3: 添加更多日志 如果问题仍然存在,可以在JwtInterceptor中添加更多日志: ```java @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { String uri = request.getRequestURI(); System.out.println("=== JWT拦截器执行 ==="); System.out.println("请求路径: " + uri); // 检查是否在排除列表中 // 如果在排除列表中,这段代码不应该执行 ... } ``` ## 前端配置 前端已经完成以下配置: ### 1. 游客白名单 **文件**: `peidu/uniapp/src/utils/request.js` ```javascript const GUEST_ALLOWED_URLS = [ '/api/service/list', '/api/service/search', '/api/category/all', '/api/banner/list', '/api/home/courses', ... ] ``` ### 2. 游客模式判断 - 游客访问白名单接口时,不发送Authorization头 - 如果后端返回401,返回空数据而不是错误 ### 3. 登录拦截 - 预约页面的"确认预约"按钮会检查登录状态 - 游客点击时提示"请先登录"并跳转 ## 测试清单 - [ ] 后端服务已重启 - [ ] 使用curl测试接口可以匿名访问 - [ ] 前端游客模式可以浏览服务列表 - [ ] 前端游客模式可以查看服务详情 - [ ] 前端游客点击"确认预约"时提示登录 ## 注意事项 1. **生产环境配置** - 某些接口在生产环境可能需要登录 2. **安全性** - 确保敏感接口不在排除列表中 3. **一致性** - 前后端的白名单配置应该保持一致 --- **创建时间**: 2026-02-01 **状态**: 配置已完成,待验证