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

时间:2013-05-11 16:05:34

标签: node.js passport.js

我正在使用node.js和passport.js为auth编写简单的应用程序。

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

2 个答案:

答案 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.deserializeUserpassport.serializeUser中的请求对象,因为这些方法是为了处理会话中用户信息的序列化(请查看github说明)。这些方法接收对象和函数作为参数。在serializeUser上,第一个参数是一个带有用户信息的对象,您将序列化并传递给done函数(回调)。在deserializeUser上,第一个参数是一个被序列化的对象,您必须执行相反的操作。