• 10 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 3/13/20

Créez des tokens d'authentification

Log in or subscribe for free to enjoy all this course has to offer!

Créez des tokens d'authentification

Les tokens d'authentification permettent aux utilisateurs de ne se connecter qu'une seule fois à leur compte. Au moment de se connecter, ils recevront leur token et le renverront automatiquement à chaque requête par la suite. Ceci permettra au back-end de vérifier que la requête est authentifiée.

Pour pouvoir créer et vérifier les tokens d'authentification, il nous faudra un nouveau package :

npm install --save jsonwebtoken

Nous l'importerons ensuite dans notre contrôleur utilisateur :

const jwt = require('jsonwebtoken');

Enfin, nous l'utiliserons dans notre fonction login :

exports.login = (req, res, next) => {
User.findOne({ email: req.body.email })
.then(user => {
if (!user) {
return res.status(401).json({ error: 'Utilisateur non trouvé !' });
}
bcrypt.compare(req.body.password, user.password)
.then(valid => {
if (!valid) {
return res.status(401).json({ error: 'Mot de passe incorrect !' });
}
res.status(200).json({
userId: user._id,
token: jwt.sign(
{ userId: user._id },
'RANDOM_TOKEN_SECRET',
{ expiresIn: '24h' }
)
});
})
.catch(error => res.status(500).json({ error }));
})
.catch(error => res.status(500).json({ error }));
};

Dans le code ci-dessus :

  • nous utilisons la fonction sign dejsonwebtoken pour encoder un nouveau token ;

  • ce token contient l'ID de l'utilisateur en tant que payload (les données encodées dans le token) ;

  • nous utilisons une chaîne secrète de développement temporaire RANDOM_SECRET_KEY pour encoder notre token (à remplacer par une chaîne aléatoire beaucoup plus longue pour la production) ;

  • nous définissons la durée de validité du token à 24 heures. L'utilisateur devra donc se reconnecter au bout de 24 heures ;

  • nous renvoyons le token au front-end avec notre réponse.

Vous pouvez désormais utiliser l'onglet « Réseau » de Chrome DevTools pour vérifier que, une fois connecté, chaque requête provenant du front-end contient bien un en-tête « Authorization » avec le mot-clé « Bearer » et une longue chaîne encodée. Il s'agit de notre token !

Dans le chapitre suivant, nous créerons un élément de middleware pour vérifier ce token et son contenu afin de nous assurer que seules les requêtes autorisées ont accès aux routes à protéger.

Example of certificate of achievement
Example of certificate of achievement