返回 Bug 清单
BUG-0579project-53高已修复backend-auth
JWT payload 缺失 role 字段导致 RolesGuard 全部 403
发现:2026-10-09验证:2026-10-09置信度:92%
症状
所有标注 @Roles(ADMIN/SUPER_ADMIN) 的端点 /v1/admin/* /v1/scenes /v1/orders 无论 JWT 合法与否全部返回 403 Forbidden
根因
AuthService.generateToken() 只签 sub+email 不放 role;JwtStrategy.validate() 也只返回 sub+email,导致 RolesGuard 从 request.user.role 取值永远是 undefined
修复方案
1) auth.service.ts generateToken(userId, email, role) sign({sub,email,role}) 两处 login/register 补 role 2) jwt.strategy.ts validate(payload) 返回 {sub,email,role}
错误签名
RolesGuard: user.role === undefined → 403 Forbidden on all protected endpoints技术信息
来源项目
project-53
涉及文件
api/src/modules/auth/auth.service.ts, api/src/modules/auth/jwt.strategy.ts
标签
project-53, mcp-reported, source-agent