gpt4 book ai didi

node.js - 验证失败时如何重新填充我的登录表单

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

当验证失败时,我处于登录表单中,我能够显示验证错误消息,但我不知道如何重新填充登录表单。

我希望用户在验证错误时不要再次输入他的电子邮件地址。

到目前为止我所做的就是尝试获取电子邮件值,因为我使用 connect-flash 从 Passport.js 发回错误。

我的护照本地策略是。

passport.use(
"local.signin",
new LocalStrategy(
{
usernameField: "email",
passwordField: "password",
passReqToCallback: true
},
function(req, email, password, done) {
console.log("I am in passport");
req.checkBody("email", "invalid email")
.notEmpty()
.isEmail();
req.checkBody("password",'invalid password')
.notEmpty();
req.flash('email',email);
req.flash('password',password);
var errors = req.validationErrors();

if(errors){
var messages = [];
errors.forEach((error) => {
messages.push(error.msg);
});
console.log("errors: ", errors);
return done(null, false, req.flash("error", messages));
}
User.findOne({email:email}, (err, user) => {
if(err){
return done(err);
}
if(!user){
return done(null, false, {message: "No user found!"});
}
if(!user.validPassword(password)){
return done(null, false, {message: "Wrong Password"});
}
return done(null, user);
});
}
)
);

以及验证失败后路由重定向到的索引函数

exports.index = function(req, res) {
var messages = req.flash("error");
console.log("email: ",req.flash('email'));
res.render("admin/index", {
layout: "loginSignup",
messages: messages,
hasErrors: messages.length > 0,
email: req.flash('email'),
password: req.flash('password')
});
};

在这里,当我console.log();时它显示空数组,电子邮件和密码未保存在闪存中,因此我无法填充 View 中的输入字段

当我收到错误消息时,我没有得到我的代码有什么问题,为什么不收到电子邮件和密码值。

或者有没有更好的方法在nodejs中重新填充表单

最佳答案

为什么不尝试这样的事情呢?

res.render("admin/index", {
layout: "loginSignup",
messages: messages,
hasErrors: messages.length > 0,
email: req.body('email') || '',
password: req.body('password') || ''
});

注意,这是假设路由安装在 app.post() 调用上并且您正在使用 bodyparser 中间件,如果您使用 app.get(),则在我的示例中将 req.body 更改为 req.params .

关于node.js - 验证失败时如何重新填充我的登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57057240/

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