2013-07-17 4 views
1

Я использую Passport для аутентификации в сочетании с node-orm2. Паспорт требует, чтобы вы регистрировали функции для сериализации и десериализации пользователей в сеансе и из него. Мои пользователи хранятся в базе данных, к которой я подключаюсь через промежуточное программное обеспечение узла-orm2 Express. Средство сравнения orm2 теряет свои модели на объект req для легкого доступа. К сожалению, Passport не предоставляет доступ к объекту req в deserializeUser. Я наткнулся на эту solution, но я надеюсь на что-то лучше:Как получить доступ к промежуточному программному обеспечению node-orm2 Express внутри паспорта.deserializeUser

var User; 

passport.use({ passReqToCallback: true }, new LocalStrategy(function (request, username, password, done) { 
    if (!User) { 
     User = request.models.User; 
    } 

User 
    .find({ username: username }) 
    .limit(1) 
    .run(function (err, users) { 
     var user = users[0]; 

     if (err) { 
      done(err); 
     } else if (!hasher.verify(password, user.password)) { 
      done(null, false); 
     } else { 
      done(null, user); 
     } 
    }); 
})); 

passport.deserializeUser(function (id, done) { 
    User.get(id, done); 
}); 

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^