suchen

Heim  >  Fragen und Antworten  >  Hauptteil

mongodb - Wie kann man mit node.js dafür sorgen, dass die verbleibenden Routing-Dateien nicht ausgeführt werden?

Wenn ich beispielsweise das Passwort ändern möchte, habe ich ein altes Passwort und ein neues Passwort. Die Überprüfung des alten Passworts ist von der Änderung des neuen Passworts getrennt. Wie kann ich verhindern, dass das neue Passwort geändert wird?

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

Antworte allen(2)Ich werde antworten

  • 滿天的星座

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

    回调函数的参数加上next,验证成功则next,验证失败则返回失败

    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('/');
            });
        }
    });
    
    

    但其实可以合在一起,为什么要分开呢? 比如:

    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');
    });

    Antwort
    0
  • 为情所困

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

    供参考:

    1、router.post("/:userid",function(req,res) {

    //不想使得当旧密码验证不成功的时候让以下代码执行
    router.post("/:userid",function(req,res) {

    是重复的router,你需要把下面这段处理代码(修改密码),放到上面去。

    2、另外,可以考虑passwort.js做登录这块的管理。

    供参考。

    Love MongoDB! Have fun!

    Antwort
    0
  • StornierenAntwort