RBAC
NestJS 🟡 MidDéfinition
Role-Based Access Control : système d'autorisation ou les permissions sont attribuées a des roles (admin, user, editor) plutôt qu'a des individus.
Analogie
Comme les clés d'un immeuble : le gardien a le passe-partout, les résidents ont la clé de leur étage.
Exemple de code
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(ctx: ExecutionContext) {
const roles = this.reflector.get<string[]>('roles', ctx.getHandler());
if (!roles) return true;
const user = ctx.switchToHttp().getRequest().user;
return roles.includes(user.role);
}
}
Cas d'usage
Restreindre l'accès aux endpoints admin ou modérateur selon le role de l'utilisateur.
Anti-pattern
Termes liés
En entretien
Explique-moi ce qu'est le RBAC et comment tu l'implémenterais avec un Guard.
RBAC, c'est le Role-Based Access Control : les permissions sont attribuées à des rôles comme admin, user ou editor plutôt qu'à des individus, comme les clés d'un immeuble où le gardien a le passe-partout et les résidents ont la clé de leur étage. On l'implémente via un guard qui lit les rôles requis avec Reflector et les compare au rôle de l'utilisateur courant.
Pourquoi éviter de hardcoder les vérifications de rôle dans chaque handler ?
Parce que c'est l'anti-pattern décrit : ça duplique la logique de vérification partout au lieu d'utiliser un guard combiné à des metadata via @SetMetadata. Le RolesGuard centralise cette logique une seule fois et la réutilise sur tous les endpoints protégés.
Fiche mise à jour le 2026-09-27