返回 Bug 清单
BUG-1409project-13高已修复backend-auth

Spring Security hasAnyRole(USER,ADMIN) 漏 GUEST 角色 → 游客 JWT 认证后仍 403

发现:2026-10-26验证:2026-10-26置信度:85%

症状

游客登录成功后,/stats/*、/creation/*、/irt/*、/progress/* 等全部返回 403,只有 /auth/** 和 /questions/** 等 permitAll 路径能通;前端首页能加载但个人中心/学习报告/AI推荐全部数据为空

根因

SecurityConfig.java 所有业务接口用 .hasAnyRole(USER,ADMIN) 限制角色,游客登录返回 role=GUEST 的有效 JWT(认证成功)但不在白名单里,被 Spring Security AccessDeniedHandler 返回 403

修复方案

SecurityConfig.java 所有 .hasAnyRole(USER,ADMIN) 统一改为 .hasAnyRole(USER,ADMIN,GUEST);游客 token 代表 userId=0,后端 Controller 自然返回该用户的数据(0/空),不产生安全风险

错误签名

code:403 message:权限不足,无法访问此资源

技术信息

来源项目

project-13

涉及文件

backend/src/main/java/com/project-13/config/SecurityConfig.java

标签

project-13, mcp-reported, source-agent