[英]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.