搜尋

首頁  >  問答  >  主體

mongodb - node.js如何讓剩下的路由檔案不執行?

例如我要進行密碼修改功能,有舊密碼新密碼,舊密碼的驗證與新密碼的修改分開。請問如何使新密碼的修改不執行?

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

全部回覆(2)我來回復

  • 滿天的星座

    滿天的星座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');
    });

    回覆
    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!

    回覆
    0
  • 取消回覆