Chargement en cours...
Chargement en cours...
Apprenez à implémenter un système d'authentification et d'autorisation complet avec NestJS
La sécurité est un aspect fondamental dans le développement d'API REST modernes. Dans cet article, nous allons explorer comment créer une API REST sécurisée avec NestJS, en implémentant l'authentification JWT et un système de rôles utilisateur (Admin et User).
Commençons par mettre en place notre projet NestJS. Si vous n'avez pas encore installé le CLI NestJS, vous pouvez le faire avec la commande suivante :
Ensuite, créons notre projet :
Installons les dépendances nécessaires pour notre système d'authentification :
Ces packages nous permettront de :
Pour cet exemple, nous utiliserons TypeORM avec une base de données PostgreSQL. Installons les packages nécessaires :
Configurons notre connexion à la base de données dans app.module.ts
:
Créons un fichier .env
à la racine du projet :
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=votre_mot_de_passe
DB_NAME=nest_auth
DB_SYNC=true
JWT_SECRET=votre_secret_jwt
JWT_EXPIRATION=3600
Créons notre entité User avec support pour les rôles :
Créons maintenant notre module d'authentification :
Implémentons la logique d'authentification :
Créons un DTO pour la connexion :
Créons un DTO pour l'inscription :
Implémentons le service des utilisateurs :
Maintenant, implémentons notre système de contrôle d'accès basé sur les rôles. Créons d'abord une stratégie JWT :
Créons un garde personnalisé pour vérifier les rôles :
Créons un décorateur pour spécifier les rôles requis :
Configurons le module d'authentification :
Configurons le module des utilisateurs :
Maintenant, implémentons les contrôleurs avec les routes protégées :
Créons le décorateur pour récupérer l'utilisateur actuel :
Créons le contrôleur pour les utilisateurs avec des routes protégées par rôles :
Configurons la validation globale dans notre application :
Créons un filtre d'exception personnalisé :
Appliquons ce filtre globalement :
Dans cet article, nous avons créé une API REST sécurisée avec NestJS, implémentant l'authentification JWT et un système de contrôle d'accès basé sur les rôles. Nous avons :
Ce modèle peut être étendu pour répondre à des besoins plus complexes, comme l'ajout de fonctionnalités de :
Le code complet est disponible sur GitHub.