返回 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