我在使用Express 4中的Passport.js时遇到了显示Flash消息的问题。在Passport.js本地策略文档中,展示如何设置Flash消息,但并没有详细说明如何实际展示它。
以下是我的做法:
passport.use(new auth(function (username, password, done) {
con.query(query.login, [username], function(err, rows) {
if (err) {
done(err);
}
if (rows.length != 1) {
console.log('Login attempted for ' + username);
return done(null, false, {message: "Wrong username/password"});
}
user = rows[0];
bcrypt.compare(password, user.passwordHash, function (err, correct) {
delete user.passwordHash;
if (correct) {
return done(null, user);
} else {
console.log('Login attempted for ' + username);
return done(null, false, {message: "Wrong username/password"});
}
})
});
}));
app.get('/login', function(req, res) {
var pageParameters = {};
var flash = req.flash('message');
// console.log(flash);
if (flash != null && flash != '') {
pageParameters.message = flash;
}
res.render('login', pageParameters);
});
app.post('/login', passport.authenticate('local', {
failureRedirect: '/login',
failureFlash: true
}), function (req, res) {
req.session.user = req.user;
if (typeof req.session.redirect !== 'undefined') {
res.redirect(req.session.redirect);
delete req.session.redirect;
} else {
res.redirect('/');
}
});
没有错误,控制台未提及flash
未定义。 console.log(flash)
没有显示任何内容。如何显示flash
?