N10 — Exercices Authentification JWT
10 exercices progressifs · Valide en temps réel · Solutions incluses
Créer un token JWT avec jwt.sign
Utilisez jwt.sign(payload, secret, options) pour créer un token avec un payload contenant userId et email, une expiration de 7 jours.
Vérifier un token avec jwt.verify
Utilisez jwt.verify(token, secret) dans un bloc try/catch pour décoder un token et afficher son payload.
Hacher un mot de passe avec bcrypt.hash
Utilisez await bcrypt.hash(password, 10) pour hacher un mot de passe. Affichez le hash résultant.
Vérifier un mot de passe avec bcrypt.compare
Écrivez une fonction asynchrone qui utilise bcrypt.compare(motDePasse, hash) et retourne true ou false.
Middleware verifyToken complet
Écrivez le middleware verifyToken(req, res, next) qui extrait le token du header Authorization: Bearer, le vérifie et attache le payload à req.user.
Route login retournant un JWT
Écrivez une route POST /auth/login qui vérifie les identifiants avec bcrypt.compare et retourne un token JWT si valide.
Route protégée avec verifyToken
Créez une route GET /auth/profile protégée par le middleware verifyToken. La route doit retourner les données de req.user.
Extraire userId depuis req.user
Dans un handler de route protégée, extrayez userId et email depuis req.user et utilisez-les pour filtrer des données.
Gestion de TokenExpiredError
Améliorez le middleware verifyToken pour distinguer TokenExpiredError (session expirée) des autres erreurs JWT (token corrompu/falsifié).
Système d'authentification complet
Défi final : écrivez un système d'auth complet avec register, login, et verifyToken. Le code doit inclure jwt.sign, bcrypt.hash et la vérification du header Authorization.