【发布时间】:2015-06-18 06:17:42
【问题描述】:
我正在使用 Passport.js 和 Express - 由于某种原因,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 对象而不是用户 ID 来反序列化,但我认为这是不正确的。我确实知道根本没有调用 deserializeUser 和 serializeUser。
【问题讨论】:
-
不应该存储在
req.user._id吗? (或者只是req.user) -
问题似乎是一些配置问题 - 正如我所提到的 - 我知道根本没有调用 deserializeUser 和 serializeUser 的事实。我有另一个可以运行的 Express 应用程序,这两种方法被调用。
标签: node.js express passport.js