mongodb - node.js comment faire en sorte que les fichiers de routage restants ne soient pas exécutés ?
为情所困
为情所困 2017-05-24 11:31:27
0
2
699

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('/');
        });
    }
});
为情所困
为情所困

répondre à tous(2)
滿天的星座

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');
});
为情所困

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!

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal