RBAC Policy

정책은 세 지점이 맞아야 동작한다

라우트의 @Roles, JWT payload의 roles, RolesGuard의 비교 규칙이 같은 역할 모델을 바라보는지 확인합니다.

@Roles

라우트 요구 역할

admin-dashboard는 admin처럼 라우트별 최소 역할을 메타데이터로 고정합니다.

JWT

사용자 역할 전달

로그인 시 roles를 payload에 넣고 JwtStrategy가 req.user.roles로 복원합니다.

Guard

비교 규칙 선택

some은 하나라도 일치하면 허용하고, 더 엄격한 정책은 별도 규칙으로 분리합니다.

allow
요구 역할과 사용자 역할이 만납니다.

인증된 사용자가 필요한 역할 중 하나를 가지면 핸들러가 실행됩니다.

403
인증은 됐지만 권한이 부족합니다.

req.user는 있어도 역할 비교를 통과하지 못하면 Forbidden으로 응답합니다.