我正在使用node.js和passport.js为auth编写简单的应用程序。
我可以访问serializeUser中的请求对象吗?
答案 0 :(得分:7)
实际上非常简单:req
被添加为第一个参数
passport.deserializeUser(function(req, id, done) {...
https://github.com/jaredhanson/passport/issues/111
如果你做req.res.render('whatever'
它可行。
答案 1 :(得分:2)
我认为钇和滞后反射问题略有不同:
回答钇:
要访问请求对象,您必须在处理资源授权的快速中间件中执行此操作。
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");
}
如果您已完成配置,Passaport将对您的请求对象进行修改,以便您可以使用req.user
访问用户信息。您还有一个方法req.isAuthenticated()
来检查第三方身份验证是否成功。
回答laggingreflex:
您无法访问passport.deserializeUser
和passport.serializeUser
中的请求对象,因为这些方法是为了处理会话中用户信息的序列化(请查看github说明)。这些方法接收对象和函数作为参数。在serializeUser
上,第一个参数是一个带有用户信息的对象,您将序列化并传递给done
函数(回调)。在deserializeUser
上,第一个参数是一个被序列化的对象,您必须执行相反的操作。