2015-09-17 3 views
0

Вот мой маршрут обработчик:паспорта местная стратегия не вызывались

exports.login = function(req, res, next) { 
    if (!req.body.username || !req.body.password) 
     next(); 
    passport.authenticate('local'); 
}; 

Я знаю, что это становится выполняется, когда я подать регистрационную форму и req.body.username и req.body.password содержат значение - выразить bodyParser делает свое дело (Я установил там точку останова).

Вот моя локальная стратегия:

passport.use(new LocalStrategy(
     function(username, password, done) { 
      console.log('local strategy called with: %s', username); 
      var User = bsHelper.getModelFromResource('users'); 
      User.findOne({ where: { 
       email_text: username, 
       password_hash: password 
      } }) 
       .then(
       function (user) { 
        if (!user) { 
         return done(null, false, { message: 'Incorrect email.' }); 
        } 
        return done(null, user); 
       }, 
       function(err) { 
        return done(err); 
       } 
      ); 
     } 
    )); 

Заявление в верхней части проверки обратного вызова не вошел в консоль.

Я не знаю, что еще проверить. Я попробовал обновить до последней версии паспорта ...

ответ

2

Когда вы делаете passport.authenticate('local'), он фактически возвращает функцию в стиле обратного вызова экспресс-маршрутизатора. Таким образом, вы можете вызвать функцию или передать его в маршрутизатор обратного вызова:

exports.login = passport.authenticate('local') 

или

exports.login = function(req, res, next) { 
    if (!req.body.username || !req.body.password) 
     next(); 
    passport.authenticate('local')(req, res, next) ; 
};