peixue-dev/Archive/[一次性]后端游客模式配置说明-2026-02-01.md

3.6 KiB

后端游客模式配置说明

当前配置状态

1. Spring Security配置

文件: peidu/backend/src/main/java/com/peidu/config/SecurityConfig.java

配置内容:

.authorizeRequests()
    // 放行所有接口(临时测试用)
    .anyRequest().permitAll()

状态: 已配置,所有接口都允许访问

2. JWT拦截器排除路径

文件: peidu/backend/src/main/java/com/peidu/config/WebMvcConfig.java

已排除的路径:

.excludePathPatterns(
    "/api/service/**",      // ✅ 服务相关接口
    "/api/category/**",     // ✅ 分类相关接口
    "/api/banner/**",       // ✅ 轮播图接口
    "/api/teacher/list",    // ✅ 教师列表
    "/api/teacher/detail/**", // ✅ 教师详情
    ...
)

状态: 已配置,游客可以访问这些接口

问题诊断

可能的原因

  1. 后端未重启 - 修改配置后需要重启后端服务
  2. 缓存问题 - 可能有缓存导致配置未生效
  3. 端口或URL错误 - 前端请求的URL可能不正确

验证步骤

1. 检查后端是否运行

# Windows
netstat -ano | findstr :8080

# 或者查看进程
tasklist | findstr java

2. 测试接口是否可以匿名访问

使用Postman或curl测试:

# 测试服务分类接口(不带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中添加更多日志:

@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

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
状态: 配置已完成,待验证