• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 13/03/2020

Configurez le middleware d'authentification

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Implémentez le middleware d'authentification

Nous allons à présent créer le middleware qui protégera les routes sélectionnées et vérifier que l'utilisateur est authentifié avant d'autoriser l'envoi de ses requêtes.

Créez un dossier middleware et un fichier auth.js à l'intérieur :

const jwt = require('jsonwebtoken');
module.exports = (req, res, next) => {
try {
const token = req.headers.authorization.split(' ')[1];
const decodedToken = jwt.verify(token, 'RANDOM_TOKEN_SECRET');
const userId = decodedToken.userId;
if (req.body.userId && req.body.userId !== userId) {
throw 'Invalid user ID';
} else {
next();
}
} catch {
res.status(401).json({
error: new Error('Invalid request!')
});
}
};

Dans ce middleware :

  • étant donné que de nombreux problèmes peuvent se produire, nous insérons tout à l'intérieur d'un bloc try...catch ;

  • nous extrayons le token du header Authorization de la requête entrante. N'oubliez pas qu'il contiendra également le mot-clé Bearer . Nous utilisons donc la fonction split pour récupérer tout après l'espace dans le header. Les erreurs générées ici s'afficheront dans le bloc catch ;

  • nous utilisons ensuite la fonction verify pour décoder notre token. Si celui-ci n'est pas valide, une erreur sera générée ;

  • nous extrayons l'ID utilisateur de notre token ;

  • si la demande contient un ID utilisateur, nous le comparons à celui extrait du token. S'ils sont différents, nous générons une erreur ;

  • dans le cas contraire, tout fonctionne et notre utilisateur est authentifié. Nous passons l'exécution à l'aide de la fonction next() .

Maintenant, nous devons appliquer ce middleware à nos routes stuff , qui sont celles à protéger. Dans notre routeur stuff , nous importons notre middleware et le passons comme argument aux routes à protéger :

const express = require('express');
const router = express.Router();
const auth = require('../middleware/auth');
const stuffCtrl = require('../controllers/stuff');
router.get('/', auth, stuffCtrl.getAllStuff);
router.post('/', auth, stuffCtrl.createThing);
router.get('/:id', auth, stuffCtrl.getOneThing);
router.put('/:id', auth, stuffCtrl.modifyThing);
router.delete('/:id', auth, stuffCtrl.deleteThing);
module.exports = router;

Désormais, à partir du front-end, vous devriez être capable de vous connecter et d'utiliser normalement l'application. Pour vérifier que les requêtes non autorisées ne fonctionnent pas, vous pouvez utiliser une application (telle que Postman) pour passer une demande sans en-tête Authorization . L'API refusera l'accès et renverra une réponse 401.

Félicitations ! Votre API implémente à présent l'authentification par token et est correctement sécurisée.

En résumé

Dans cette partie du cours :

  • vous avez ajouté un modèle de données User afin de stocker les informations utilisateur dans votre base de données ;

  • vous avez implémenté le cryptage de mot de passe sécurisé afin de stocker en toute sécurité les mots de passe utilisateur ;

  • vous avez créé et envoyé des tokens au front-end pour authentifier les requêtes ;

  • vous avez ajouté le middleware d'authentification pour sécuriser les routes dans votre API. De cette façon, seules les requêtes authentifiées seront gérées.

Dans la dernière partie de ce cours, vous en apprendrez plus sur la gestion des fichiers :

  • comment capturer les fichiers provenant du front-end ;

  • comment les enregistrer sur votre serveur, et

  • comment les supprimer lorsqu'ils ne sont plus nécessaires.

Exemple de certificat de réussite
Exemple de certificat de réussite