PassportJS Google OAuth戦略では、いくつかの奇妙な理由から、ユーザーIDをシリアル化してブラウザに送信するためにCookieに送信すると、IDを返してデシリアライズしないあなたはマングースを使用している場合はpassportjs google oauth2 strategy
app.use(cookieSession({
maxAge: 24 * 60 * 60 * 1000,
keys: 'dkfehfhgddf'
}));
PassportJS Google OAuth戦略では、いくつかの奇妙な理由から、ユーザーIDをシリアル化してブラウザに送信するためにCookieに送信すると、IDを返してデシリアライズしないあなたはマングースを使用している場合はpassportjs google oauth2 strategy
app.use(cookieSession({
maxAge: 24 * 60 * 60 * 1000,
keys: 'dkfehfhgddf'
}));
の下に、あなたは、あなたのコードでミスを犯してきた私はconsole.log
ユーザー、それは詳細に入るためにundefined
、
passport.deserializeUser((id, done) => {
User.findById(id).then((user, done) => {
console.log(user);
done(null, user);
});
});
を返すときので、私は私のクッキーがされ予期しない動作が発生します。
findById()
ファンクションのPromiseバージョンを使用する場合は、後で.exec()
に電話をかけて、アクションをディスパッチする必要があります。また、deserializeUser
のdone
コールバックをシャドーしているので、決して呼び出されません。ここで
は、それがどのように動作するかを示します。
passport.deserializeUser((id, done) => {
User.findById(id).exec()
.then(user => {
if (user) {// user may be null
done(null, user);
} else {
done(new Error("User not found"), null);
}
})
.catch(error => {
done(error, false);
});
});
清算をありがとう。まあ、私はconsole.logのidがmongoに返されたときに、ブラウザから何も返さないということが起こります。したがって、dbはそれを照会するためにidを受け取っていません –
あなたはMongoDBのからのユーザー・データをフェッチするためにマングースを使用していますか? –
ええ、私は使用します。mongodb –