DEV Community

Cover image for Nest JS Guard
David le codeur
David le codeur

Posted on

Nest JS Guard

Image description

Introduction

Dans cette publication, nous explorerons le concept des guards dans Nest.js et comment les utiliser pour sécuriser vos applications backend. Les guards jouent un rôle crucial en permettant ou en refusant l'accès aux routes de manière conditionnelle, en fonction des règles que vous définissez.

Qu'est-ce qu'un Guard ?

Les guards dans Nest.js sont des classes annotées avec @Injectable() qui implémentent l'interface CanActivate. Ils sont utilisés pour protéger l'accès aux routes en fonction de certains critères comme les autorisations de l'utilisateur, l'authentification, ou d'autres conditions métier.

Exemple de Code

Voici un exemple de base pour illustrer comment créer un guard simple dans Nest.js :

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    // Logic to determine if user is authenticated
    const request = context.switchToHttp().getRequest();
    return !!request.user;
  }
}

Explication du Code

  • Nous créons une classe AuthGuard qui implémente CanActivate.
  • Dans la méthode canActivate, nous accédons à l'exécution du contexte pour vérifier si l'utilisateur est authentifié (request.user).
  • Si l'utilisateur est authentifié, canActivate retourne true, sinon false.

Utilisation dans un Contrôleur

Pour utiliser ce guard dans un contrôleur, vous pouvez l'appliquer à une route spécifique comme ceci :

import { Controller, Get, UseGuards } from '@nestjs/common';
import { AuthGuard } from './auth.guard';

@Controller('products')
export class ProductsController {
  @Get()
  @UseGuards(AuthGuard)
  findAll(): string {
    return 'This action returns all products';
  }
}

Conclusion

Les guards sont essentiels pour sécuriser vos applications Nest.js, en offrant un contrôle d'accès flexible et basé sur des règles. En utilisant les guards, vous pouvez facilement implémenter des stratégies d'autorisation et d'authentification dans vos APIs.

Prochaines Étapes

  • Explorez d'autres types de guards comme AuthGuard, RolesGuard, ou créez des guards personnalisés pour répondre à des besoins spécifiques.
  • Intégrez des guards avec des stratégies d'autorisation plus complexes basées sur des rôles ou des permissions.

Ressources Additionnelles

Top comments (0)