登录失败时,显示我的自定义flash错误消息(“用户名错误”或“密码错误”)时出现问题。
-
如果我以表单的形式保留用户名或密码为空,则重定向到登录页面的操作正确完成,并显示默认的闪存错误消息“缺少凭据”。
-
如果输入的用户名不正确或密码错误,则也可以正确重定向到登录页面,但不会显示任何消息。有人可以帮忙吗?
我的路线:
// GET request for signing a user in
router.get("/user/log-in",user_controller.user_log_in_get);
// POST request for logging a user in
router.post("/user/log-in",user_controller.user_log_in_post);
我的控制器:
exports.user_log_in_get = function(req,res,next) {
res.render("log_in_form",{ title: "Log in",messages: req.flash("error") });
};
exports.user_log_in_post = passport.authenticate("local",{
successRedirect: "/",failureRedirect: "/clubhouse/user/log-in",failureflash: true
});
使用护照:
passport.use(
new LocalStrategy((username,password,done) => {
User.findOne({ username: username },(err,user) => {
if (err) return done(err);
if (!user) {
return done(null,false,{ error: "Incorrect username" });
}
bcrypt.compare(password,user.password,res) => {
if (res) {
// passwords match! log user in
return done(null,user);
} else {
// passwords do not match!
return done(null,{ error: "Incorrect password" });
}
});
return done(null,user);
});
})
);
passport.serializeuser(function(user,done) {
done(null,user.id);
});
passport.deserializeuser(function(id,done) {
User.findById(id,function(err,user) {
done(err,user);
});
});
app.use(passport.initialize());
app.use(passport.session());
我的登录表单(pug)的底部:
if messages
ul
for message in messages
li!= message
谢谢!