Você não está definindo o parâmetro inicial do passaporte.use e passando o req de volta para o retorno de chamada, por exemplo - do meu código:
passport.use('local-login', new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, email, password, done) {
// asynchronous
// User.findOne wont fire unless data is sent back
process.nextTick(function() {
db.Account.findOne( { ...
Você pode então autenticar usando:
passport.authenticate('local-login',function(err,user,info){
No seu caso, você está chamando o passaporte.authenticate 'local' para que seu primeiro parâmetro no passaporte.use seja 'local' para que ele chame a estratégia correta