3.7 KiB
3.7 KiB
管理员统计接口404错误修复说明
问题概述
应用出现静态资源404错误,具体表现为:
No static resource admin/statistics/most-viewed-videos
No static resource admin/statistics/most-used-workflows
错误原因分析
1. 问题本质
前端请求缺少JWT认证头,导致Spring Security将API请求误当作静态资源请求处理。
2. 技术细节
- 后端接口正常:
AdminRevenueController中存在对应的API接口 - 路由配置正确:
@RequestMapping("/admin")+@GetMapping("/statistics/most-used-workflows")@RequestMapping("/admin")+@GetMapping("/statistics/most-viewed-videos")
- 认证缺失:前端 fetch 请求没有携带 JWT Authorization 头
- Spring Security拦截:未认证请求被当作静态资源处理
3. 对比分析
✅ 正常工作的接口:/admin/revenue/statistics - 有JWT认证
❌ 出错的接口:/admin/statistics/most-* - 缺少JWT认证
解决方案
修改文件
src/main/resources/static/test_admin_stats.html
修改前的代码
const response = await fetch(`/admin/statistics/most-used-workflows?${params.toString()}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
修改后的代码
const response = await fetch(`/admin/statistics/most-used-workflows?${params.toString()}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + (localStorage.getItem('adminToken') || sessionStorage.getItem('adminToken') || '')
}
});
修复内容
-
为工作流统计接口添加认证头
- 接口:
/admin/statistics/most-used-workflows - 添加:
Authorization: Bearer [token]
- 接口:
-
为视频统计接口添加认证头
- 接口:
/admin/statistics/most-viewed-videos - 添加:
Authorization: Bearer [token]
- 接口:
认证Token获取逻辑
localStorage.getItem('adminToken') || sessionStorage.getItem('adminToken') || ''
- 优先从
localStorage获取管理员token - 如果不存在,则从
sessionStorage获取 - 都不存在时使用空字符串
验证方法
1. 重启应用后测试
# 重新编译并启动应用
mvn spring-boot:run
2. 检查日志
- ✅ 成功标志:应该看到类似这样的日志
INFO c.d.controller.AdminRevenueController : 收到获取最多使用工作流统计请求 INFO c.d.controller.AdminRevenueController : 收到获取最多观看视频统计请求 - ❌ 错误标志:不应再看到
NoResourceFoundException
3. 前端测试
访问 http://localhost:8081/test_admin_stats.html 并:
- 确保已登录管理员账户
- 测试"最多使用工作流统计"功能
- 测试"最多观看视频统计"功能
注意事项
- Token有效性:确保管理员token未过期
- 登录状态:使用前需要先通过管理员登录接口获取token
- 权限检查:确保当前管理员有访问统计数据的权限
预防措施
为避免类似问题,在编写新的管理员功能时:
- 统一认证处理:所有管理员API请求都应携带JWT token
- 测试覆盖:新增API时同步更新测试页面的认证逻辑
- 错误监控:定期检查应用日志,及时发现认证相关问题
相关文件
- 后端控制器:
src/main/java/com/dora/controller/AdminRevenueController.java - 前端测试页面:
src/main/resources/static/test_admin_stats.html - 认证配置:
src/main/java/com/dora/config/JwtAuthenticationFilter.java
修复完成后,原本的404错误应该消失,接口能够正常响应数据。