passport.jsを使用すると、この方法でルートを書き込むため、MongoDbドキュメントuserDoc
にアクセスできます。しかし、このようにすると... passport.serializeUser()
は決して呼び出されず、req
オブジェクトにはuser
がありません。このauthenticate()コールバックでPassportのserializeUser()が呼び出されない
auth.route('/auth/facebook/callback')
.get(function(req, res, next) {
passport.authenticate('facebook', function(err, userDoc, info) {
if (err) { return next(err); }
// I don't think !userDoc will ever happen because of mongo upsert
if (!userDoc) { return res.redirect('/login'); }
res.cookie('facebookPicUrl', userDoc.value.facebook.picture, {maxAge : 9999999,
httpOnly: false,
secure: false,
signed: false
});
res.redirect('http://localhost:9000/users')
})(req, res, next);
});
しかし、私はそれをこのように書いた場合、それがあるべきよう、req.user
がある:
auth.route('/auth/facebook/callback')
.get(passport.authenticate('facebook', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('http://localhost:9000/users')
});
どのように私はpassport.serializeUser
がreq
で呼び出されるとuser
が存在する場合にこれを行うことができますし、私も持っていますmongoDbオブジェクトへのアクセス?
うわー!私が理解する限り、これはPassport.jsのウェブサイトには記載されていません。彼らはpassport.authenticate()がreq.login()を呼び出していると言いますが、私はカスタムコールバックを提供する場合、手動で呼び出さなければならないことに気づいていませんでした。ドキュメントは非常に曖昧です! – OzzyTheGiant