gpt4 book ai didi

Node.js Passport 将 postdata 传递给 failureRedirect

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:31 25 4
gpt4 key购买 nike

这让我发疯!我使用 Express 4、 Passport 和本地 Passport 来验证登录和注册。

我正在使用这个例子: 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 来获取 View 。

最佳答案

您添加了connect-flash吗?您的应用程序的中间件?

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);
})
});
}
));

关于Node.js Passport 将 postdata 传递给 failureRedirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com