Guard

NestJS 🟡 Mid

Définition

Classe @Injectable implémentant CanActivate qui décide si une requête peut continuer. Idéal pour l'authentification et l'autorisation.

Analogie

Comme un videur de boite de nuit : il vérifie si tu as le droit d'entrer avant de te laisser passer.

Exemple de code

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const request = context.switchToHttp().getRequest();
    return !!request.headers.authorization;
  }
}

Cas d'usage

Protéger des routes avec authentification JWT, vérifier les roles RBAC ou valider des permissions.

Anti-pattern

Vérifier l'authentification dans chaque controller au lieu d'utiliser un guard réutilisable.
#core#security#interview

En entretien

  1. Explique-moi ce qu'est un Guard et à quoi il sert.

    C'est une classe @Injectable qui implémente CanActivate et décide si une requête peut continuer ou non, comme un videur de boîte de nuit qui vérifie si tu as le droit d'entrer avant de te laisser passer. C'est l'outil idéal pour l'authentification et l'autorisation.

  2. Pourquoi éviter de vérifier l'authentification directement dans chaque controller ?

    Parce que c'est l'anti-pattern à éviter : ça duplique la vérification partout au lieu d'utiliser un guard réutilisable appliqué via @UseGuards. Un guard centralise la protection des routes pour l'authentification JWT ou les rôles RBAC.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre