I'm having trouble displaying flash messages while using Passport.js in Express 4. The Passport.js local strategy documentation shows how to set the flash message, but not much about how to actually display it.
Here's how I've been doing it.
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('/');
}
});
There's no error, the console isn't telling me anything about the flash
being undefined. console.log(flash)
shows nothing. How do display the flash
?