7

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

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

4

2 回答 2

10

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

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

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

如果你这样做req.res.render('whatever',它会起作用。

于 2014-07-06T01:17:04.847 回答
3

我认为钇和滞后反射的问题略有不同:

回答钇:

要访问请求对象,您必须在处理资源授权的快速中间件中进行。

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()来检查第三方身份验证是否成功。

回答滞后反射:

您无法访问内部的请求对象passport.deserializeUserpassport.serializeUser因为这些方法是用来处理会话内部用户信息的序列化(查看github说明)。这些方法接收一个对象和一个函数作为参数。第一个参数是一个包含用户信息的对象,您将对其serializeUser进行序列化并传递给done函数(回调)。deserializeUser第一个参数是一个已序列化的对象,您必须执行相反的操作。

于 2014-07-11T22:51:21.087 回答