recherche

Maison  >  Questions et réponses  >  le corps du texte

mongodb - node.js comment faire en sorte que les fichiers de routage restants ne soient pas exécutés ?

Par exemple, si je souhaite changer le mot de passe, j'ai un ancien mot de passe et un nouveau mot de passe. La vérification de l'ancien mot de passe est séparée du changement du nouveau mot de passe. Comment puis-je empêcher la modification du nouveau mot de passe ?

router.get('/:userid', function(req, res,next) {
    if(req.session.userid){
        return next();
    }
    res.redirect('/login');
});
router.get('/:userid', function(req,res,next){
    User.find(req.session.userid,function(err,doc){
        res.render('changepassword',{
            userid: req.session.userid,
            user:doc
        });
    });
});

router.post("/:userid",function(req,res) {
    User.findOne({
        name: req.session.userid,
        pwd: req.body.oldpwd
    }, function (err, doc) {
        if (err) {
            r.error = err;
            return;
        }
        if (doc) {
            console.log('success');
        } else {
            console.log('fail');
            return;
        }
        res.json(r);
    });
});

//不想使得当旧密码验证不成功的时候让以下代码执行
router.post("/:userid",function(req,res) {
    var u = {
        pwd :req.body.pwd
    };
    var userid = req.session.userid;
    if(userid && '' != userid) {
        User.findOneAndUpdate(userid,u,function(err, docs) {
            console.log('modify-----'+ docs);
            res.redirect('/');
        });
    }
});
为情所困为情所困2768 Il y a quelques jours707

répondre à tous(2)je répondrai

  • 滿天的星座

    滿天的星座2017-05-24 11:33:27

    Ajoutez à côté des paramètres de la fonction de rappel. Si la vérification est réussie, スxス sera renvoyé. Si la vérification échoue, l'échec sera renvoyé.

    router.post("/:userid",function(req,res,next) {
        User.findOne({
            name: req.session.userid,
            pwd: req.body.oldpwd
        }, function (err, doc) {
            if (err) {
                r.error = err;
                return;
            }
            if (doc) {
                console.log('success');
                return next();
            } 
            console.log('fail');
            res.json(r);
        });
    });
    
    //不想使得当旧密码验证不成功的时候让以下代码执行
    router.post("/:userid",function(req,res,next) {
        var u = {
            pwd :req.body.pwd
        };
        var userid = req.session.userid;
        if(userid && '' != userid) {
            User.findOneAndUpdate(userid,u,function(err, docs) {
                console.log('modify-----'+ docs);
                res.redirect('/');
            });
        }
    });
    
    

    Mais ils peuvent effectivement être ensemble, alors pourquoi les séparer ? Par exemple :

    router.get('/:userid', function(req, res,next) {
        if(req.session.userid){
            return User.find(req.session.userid,function(err,doc){
                res.render('changepassword',{
                    userid: req.session.userid,
                    user:doc
                });
            });
        }
        res.redirect('/login');
    });

    répondre
    0
  • 为情所困

    为情所困2017-05-24 11:33:27

    Pour référence :

    1. router.post("/:userid", function(req,res) {
    et
    //Nous ne voulons pas que le code suivant soit exécuté lorsque la vérification de l'ancien mot de passe échoue
    router.post("/: ID utilisateur", function(req,res) {

    Il s'agit d'un routeur en double. Vous devez y mettre le code de traitement suivant (modifier le mot de passe).

    2. De plus, vous pouvez envisager password.js pour la gestion des connexions.

    Pour référence.

    J'adore MongoDB ! Amusez-vous!

    répondre
    0
  • Annulerrépondre