Я использую 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);
});