I want to access the message that my passport strategy defines in its callback, for example: done(null, false, { message: 'No such user.' }); . I found that these messages can be displayed by passing the failureFlash: true option to the passport.authenticate() function, which again requires the connect-flash middleware. So I installed the module and added var flash = require('connect-flash); to your source, as well as app.use(flash()); into the setup method of my express application. But it still crashes with an error that the .flash() method is not available. What did I miss?
More code:
var http = require('http'); var express = require('express'); var passport = require('passport'); var googleStrategy = require('passport-google').Strategy; var flash = require('connect-flash'); passport.serializeUser(function (user, done) { done(null, user); }); passport.deserializeUser(function (obj, done) { done(null, obj); }); passport.use(new googleStrategy( { returnURL: 'http://localhost:123456/auth/google/return', realm: 'http://localhost:123456/' }, function(identifier, profile, done) { process.nextTick(function () { User.findOne({ ID: identifier }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'no such user' }); } return done(null, user); }); }); }) ); var app = express(); app.configure(function() { app.set('view engine', 'ejs'); app.set('views', __dirname + '/views'); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.session({ secret: 'veryverysecretsecret' })); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(flash()); }); app.get( '/auth/google', passport.authenticate('google', { failureRedirect: '/login', failureFlash: true }), function (req, res) { res.redirect('/'); } ); app.get('/auth/google/return', passport.authenticate('google', { failureRedirect: '/login', failureFlash: true }), function (req, res) { res.redirect('/'); } ); http.createServer(app).listen(123456);
source share