req.user.roles를 만든다.
AuthGuard가 사용자를 만들고 RolesGuard가 역할을 판정한다
RBAC는 로그인 여부 확인이 아니다. JWT 인증으로 만들어진 사용자 역할과 라우트의 @Roles() 메타데이터를 비교하는 별도 인가 단계다.
| 값 | 출처 | 판단 기준 |
|---|---|---|
| user.roles | JwtStrategy.validate | 사용자가 가진 역할 목록 |
| requiredRoles | @Roles metadata | 라우트가 요구하는 역할 |
| result | RolesGuard.canActivate | 일치하면 handler 실행, 아니면 403 |
핵심: AuthGuard와 RolesGuard를 분리해야 “누구인가”와 “무엇을 할 수 있는가”를 다르게 테스트할 수 있다.