【发布时间】:2016-07-31 05:27:42
【问题描述】:
使用 passport.js,我以这种方式编写路由,因此我可以访问 MongoDb 文档 userDoc。但是,当这样做时... passport.serializeUser() 将永远不会被调用,req 对象将丢失 user。
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 并且user 存在于req 并且我还可以访问mongoDb 对象的位置?
【问题讨论】:
-
我不确定他们是否更新了文档,但这是自定义回调部分末尾的说明:“回调可以使用提供的参数来根据需要处理身份验证结果。请注意,当使用自定义回调时,应用程序负责建立会话(通过调用 req.login())并发送响应。"
标签: node.js mongodb express passport.js