MEAN ? What's that MEAN ? (Part 2)

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 …