在 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
?