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