IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Compréhension de next()


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut Compréhension de next()
    Bonjour tout le monde, j'ai fais un script de connexion sous node et pour que ça fonctionne j'ai du suivre un doc pour décomposer mon header qui possédait un Bearer token. Dans cette fonction il y a un "next", mais je ne comprends pas du tout son usage, et je ne comprends pas non plus pourquoi un simple return ne fonctionne pas... Si vous avez une idée j'en serais très heureux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    exports.getUserInfos = async (req, res) => {
      jwt.verify(req.token, SECRET, (err, decoded) => {
        if (err) {
          res.status(200).json({
            success: false,
            message: "Veuillez vous connecter pour accéder à ce contenu",
          });
        } else {
          User.findByPk(decoded.userId)
            .then((user) => {
              res.status(200).json({
                success: true,
                surname: user.surname,
                userId: user.id,
                email: user.email,
              });
            })
            .catch((err) => {
              res.status(403).json({
                success: false,
                message: "Utilisateur non existant",
              });
            });
        }
      });
    };

    Et ici le code avec le next() qui est appelé avant le code d'au dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    exports.verifyToken = (req,res,next) => {
        const bearerHeader = req.headers['authorization'];
        if (typeof bearerHeader !== 'undefined') {
            const bearer = bearerHeader.split(' ');
            const bearerToken = bearer[1];
            req.token = bearerToken;
            next();
        } else {
            res.sendStatus(403);
            return false;exports.verifyToken = (req,res,next) => {
        const bearerHeader = req.headers['authorization'];
        if (typeof bearerHeader !== 'undefined') {
            const bearer = bearerHeader.split(' ');
            const bearerToken = bearer[1];
            req.token = bearerToken;
            next();
        } else {
            res.sendStatus(403);
            return false;
        }
    }
     
        }
    }
    merci à vous.
    love.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut
    De façon assez globale, next(); veut dire "Laisse tomber cette réception de donnée, et passe à la suivante". C'est pas mal utilisé dans la communication http par des packets Nodejs.

    Je vais prendre exemple sur le framework Express.js qui permet de créer un serveur Web sous nodejs. Avec Express.js, tu peux ajouter des middlewares. Ce sont des fonctions qui vont se lancer les unes après les autres à la réception d'un appel HTTP.
    Tu peux avoir un premier middleware pour initialiser la session de l'utilisateur, un second pour vérifier qu'il soit bien connecté avec un token JWT valide, et un dernier pour lui servir la bonne page. Donc trois middleware les uns après les autres.

    Si on s'intéresse un peu plus prêt au second middleware (celui du milieu) qui gère si l'utilisateur est bien connecté avec un token JWT valide. Tu peux faire un return pour log une erreur en interne sans pour autant envoyer une réponse au client qui à demandé la page.
    Tu peux aussi faire un res.send(); pour renvoyer une réponse à l'appel HTTP pour lui signaler une erreur.
    Mais si tout se passe bien, un simple next(); va permettre de passer l'appel au prochain middleware.

    Si le code n'a pas ce next(); le prochain middleware ne sera jamais appelé et l'appel restera sans réponse (ni d'erreur, ni une page web). Dans ton cas le next(); devrait fonctionner un peu de la même façon.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut
    Merci beaucoup c'est très clair! :o

    Par contre le req.token de ce middleware est passé en paramètre de la seconde fonction, je peux donc récupérer n'importe quel variable de la fonction précédente de cette manière ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut
    Aucune idée, fait des console.log(); pour vérifier que ce soit bien le cas et quel type de data tu récupère.

Discussions similaires

  1. Get Next Line - Problème de compréhension
    Par PrettyLittleLiars dans le forum C
    Réponses: 7
    Dernier message: 07/12/2017, 22h57
  2. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  3. qbasic : pause avec FOR-NEXT
    Par clood200 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 08/08/2003, 16h51
  4. Next & Previous
    Par bidson dans le forum XMLRAD
    Réponses: 13
    Dernier message: 01/05/2003, 09h35
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo