Présentation
Suite de la semaine dernière …
Gestion du jeton
La semaine dernière, pour gérer la sécurité, JWT a été mis en place dans le projet via JSonWebToken et le code suivant dans le fichier contenant les routes de la partie authentification :
/**
* "Middleware" qui va intercepter les services AVANT certaines routes pour valider
* que l'utilisateur est bien connecté
*/
router.use((req, res, next) => {
// Récupération du token
const token = req.headers['authorization'];
// !token ?
if (!token) { res.json({ success: false, message: 'No token provided' }); return; }
// Le token ayant été "crée" par jwt, on lui demande de recommencer le travail :)
jwt.verify(token, config.secret, (err, decoded) => {
if (err) { res.json({ success: false, message: 'Token invalid: ' + err }); return ;}
// Ajout de ce qui a été décode (user._id) pour utilisation dans la suite du process
req.decoded = decoded;
// Passage à la méthode suivante
next();
});
});
.
En commençant le travail sur de nouvelles routes, j’ai constaté que l’accès aux routes demandait également le token. Ce que je n’avais pas identifié c’était que l’appel à router.use impliquant que ce test serait réalisé sur TOUTES les routes qui seraient définies après son ajout.
Donc comme les toutes sont enregistrés comme tel :
app.use('/authentification', authentication);
app.use('/blogs', blog);
toutes les routes “blogs” sont protégées. C’est bon à savoir et à garder dans un coin de la tête quand sur une application tu as une partie privée et publique …