3.6 KiB
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/**", // ✅ 教师详情
...
)
状态: ✅ 已配置,游客可以访问这些接口
问题诊断
可能的原因
- 后端未重启 - 修改配置后需要重启后端服务
- 缓存问题 - 可能有缓存导致配置未生效
- 端口或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: 重启后端服务(推荐)
- 停止后端服务
- 重新启动后端服务
- 等待服务完全启动
- 测试接口是否可以访问
方案2: 确认配置已生效
检查后端启动日志,确认:
- Spring Security配置已加载
- WebMvcConfig配置已加载
- 拦截器已注册
方案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测试接口可以匿名访问
- 前端游客模式可以浏览服务列表
- 前端游客模式可以查看服务详情
- 前端游客点击"确认预约"时提示登录
注意事项
- 生产环境配置 - 某些接口在生产环境可能需要登录
- 安全性 - 确保敏感接口不在排除列表中
- 一致性 - 前后端的白名单配置应该保持一致
创建时间: 2026-02-01
状态: 配置已完成,待验证