在passport.js中的serializeUser函数中访问请求对象

我正在编写使用node.js和passport.js进行身份validation的简单应用程序。

我可以访问serializeUser中的请求对象吗?

其实很简单: req被添加为第一个参数

 passport.deserializeUser(function(req, id, done) {... 

https://github.com/jaredhanson/passport/issues/111

如果你做req.res.render('whatever'它的作品。

我认为钇和滞后reflection问题稍有不同:

要回答钇:

要访问请求对象,你必须在一个快速的中间件内部处理你的资源的授权。

 function authMethod(req, res, next) { if (req.isAuthenticated()) { console.log(req.user); return next(); } res.status(401).send({user:undefined}); } app.get('/',authMethod,function(req,response) { res.status(200).send("OK"); } 

如果你已经完成了configuration,Passaport会修改你的请求对象,这样你就可以用req.user来访问用户信息。 您还有一个方法req.isAuthenticated()来检查第三方authentication是否成功。

回答laggedreflex:

你不能访问passport.deserializeUserpassport.serializeUser里面的请求对象,因为这些方法是用来处理会话内用户信息的序列化的(查看github的解释)。 这些方法接收一个对象和一个函数作为参数。 在serializeUser ,第一个参数是一个包含用户信息的对象,您将序列化并传递给done函数(callback函数)。 在deserializeUser ,第一个参数是一个被序列化的对象,你必须做相反的操作。