Я использую Passport.js с Express - по какой-либо причине значение req.session.passport.user отсутствует, когда это должно быть, поскольку вы можно увидеть:Passport.js - req.session.passport.user не отображается
вот моя конфигурация паспорта:
passport.serializeUser(function (user, done) {
console.log(colors.bgRed('serialize user called, user:', user));
done(null, user._id);
});
passport.deserializeUser(function (id, done) {
console.log(colors.bgRed('deserialize user called, user_id:', id));
UserModel.getNewUser().findById(id, function (err, user) {
console.log(colors.bgRed('deserialize find user called, user:', user));
done(err, user);
});
});
passport.use('local', new LocalStrategy(function (username, password, done) {
UserModel.getNewUser().findOne({
username: username
}, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: 'Incorrect username.'
});
}
if (!user.validPassword(password)) {
return done(null, false, {
message: 'Incorrect password.'
});
}
// req.user = user;
return done(null, user);
});
}));
кто-нибудь знает, что может быть неправильно? Мое единственное предположение заключается в том, что мне может потребоваться десериализация с использованием объекта Session вместо идентификатора пользователя, но я считаю неправильным. Я действительно знаю, что deserializeUser и serializeUser вообще не вызываются.
Не следует ли хранить его в 'req.user._id'? (Или просто 'req.user)' – tymeJV
проблема, кажется, какая-то проблема с настройкой - как я уже упоминал, - я действительно знаю, что десериализоватьUser и serializeUser вообще не вызываются. У меня есть другое приложение Express, которое работает, и эти два метода вызываются. –