2017-07-31 3 views
1

:両作品独立パスポート認証

app.get('/signup', recaptcha.middleware.render, function(req, res) { 
     // render the page and pass in any flash data if it exists 
     res.render('signup.ejs', { 
      message : req.flash('signupMessage'), 
      captcha : req.recaptcha 
     }); 
    }); 

    app.post('/signup', recaptcha.middleware.verify, function(req, res){ 
     if (!req.recaptcha.error) { 
      //if recaptcha is correct do somthing 
     }else { 
      req.flash('signupMessage','reCAPTCHA Incorrect'); 
      res.redirect('/signup'); 
     } 
    }); 

、しかし、私はこのようにそれらを結合する場合:

app.get('/signup', isNotLoggedIn, recaptcha.middleware.render, function(req, res) { 
     // render the page and pass in any flash data if it exists 
     res.render('signup.ejs', { 
      message : req.flash('signupMessage'), 
      captcha : req.recaptcha 
     }); 
    }); 

    app.post('/signup', recaptcha.middleware.verify, function(req, res){ 
     if (!req.recaptcha.error) { 
      passport.authenticate('local-signup', { 
       successRedirect : '/app', 
       failureRedirect : '/signup', 
       failureFlash : true 
      }); 
     }else { 
      req.flash('signupMessage','reCAPTCHA Incorrect'); 
      res.redirect('/signup'); 
     } 
    }); 

または

app.get('/signup', isNotLoggedIn, recaptcha.middleware.render, function(req, res) { 
     // render the page and pass in any flash data if it exists 
     res.render('signup.ejs', { 
      message : req.flash('signupMessage'), 
      captcha : req.recaptcha 
     }); 
    }); 

    app.post('/signup', recaptcha.middleware.verify, function(req, res){ 
     if (req.recaptcha.error) { 
      req.flash('signupMessage','reCAPTCHA Incorrect'); 
      res.redirect('/signup'); 
     } 
    }, 
    passport.authenticate('local-signup', { 
     successRedirect : '/app', // redirect to the secure chat section 
     failureRedirect : '/signup', // redirect back to the signup page if there is an error 
     failureFlash : true // allow flash messages 
    })); 

ページが読み込まれても何も起こらない。

答えて

1

だから私はそれを理解した!

このトリックは、next();を使用してオンになっています。キャプチャが正しい場合、関数はそのコードは次のように終わる:

app.get('/signup', isNotLoggedIn, recaptcha.middleware.render, function(req, res) { 
     // render the page and pass in any flash data if it exists 
     res.render('signup.ejs', { 
      message : req.flash('signupMessage'), 
      captcha : req.recaptcha 
     }); 
    }); 

    app.post('/signup', recaptcha.middleware.verify, captchaVerification, passport.authenticate('local-signup', { 
     successRedirect : '/app', // redirect to the secure chat section 
     failureRedirect : '/signup', // redirect back to the signup page if there is an error 
     failureFlash : true // allow flash messages 
    })); 

function captchaVerification(req, res, next) { 
    if (req.recaptcha.error) { 
     req.flash('signupMessage','reCAPTCHA Incorrect'); 
     res.redirect('/signup'); 
    } else { 
     return next(); 
    } 
} 

をそして、あなたは、パスポート、バックエンドを表現し、あなたのnodejsにGoogleのキャプチャを統合する方法thatsの

関連する問題