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

149 lines
3.6 KiB
Markdown

# 后端游客模式配置说明
## 当前配置状态
### 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
**状态**: 配置已完成,待验证