簡體   English   中英

Node.js護照將postdata傳遞給failureRedirect

[英]Node.js passport pass postdata on to failureRedirect

這真讓我抓狂! 我正在使用Express 4,護照和本地護照來驗證登錄和注冊。

我正在使用此示例: https : //github.com/tutsplus/passport-mongo

問題:當注冊表單未通過驗證(例如您忘記了其中一個字段)並且我們重定向到了failureRedirect(與同一注冊頁面相同)時,所有輸入的值都消失了。 您不是一個很好的用戶體驗,因為您弄亂了一個字段,所以必須填寫整個表單。

如何在表格上傳遞已經輸入的數據?

我得到了以下兩種方式來處理表單的GET和POST:

app.get('/signup', function(req, res){
    res.render('signup', {
        message: req.flash('message'),
    });
});

app.post('/signup', passport.authenticate('signup', {
    successRedirect: '/signup-complete',
    failureRedirect: '/signup', // need to pass the entered values (if any) back to the signup page
    failureFlash : true
}));

我有點懷疑值已經存在-我只是不知道如何獲取它們。

我正在使用Swig的視圖。

您是否向應用程序添加了連接閃存中間件?

var flash = require('connect-flash');

app.use(flash());

更新:

定義本地策略時,應在done函數的第三個參數中返回Flash消息。 例:

passport.use(new LocalStrategy(
  function(username, password, done) {
      findByUsername(username, function(err, user) {
        if (err) { return done(err); }
        if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
        if (user.password != password) { return done(null, false, { message: 'Invalid password' }); }
        return done(null, user);
      })
    });
  }
));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM