mongodb - Wie kann man mit node.js dafür sorgen, dass die verbleibenden Routing-Dateien nicht ausgeführt werden?
为情所困
为情所困 2017-05-24 11:31:27
0
2
685

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

Antworte allen(2)
滿天的星座

回调函数的参数加上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');
});
为情所困

供参考:

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

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

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

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

供参考。

Love MongoDB! Have fun!

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage