我正在编写使用node.js和passport.js进行身份验证的简单应用程序。在passport.js中的serializeUser函数中访问请求对象
我可以访问serializeUser中的请求对象吗?
我正在编写使用node.js和passport.js进行身份验证的简单应用程序。在passport.js中的serializeUser函数中访问请求对象
我可以访问serializeUser中的请求对象吗?
这其实很简单:req
如果你req.res.render('whatever'
它的工作原理是添加作为第一个参数
passport.deserializeUser(function(req, id, done) {...
https://github.com/jaredhanson/passport/issues/111
。
这是正确的答案 – 2017-06-22 03:54:17
我认为钇和laggingreflex问题略有不同:
要回答钇:
要访问你所要做的是明确的中间件,将解决你的资源的授权内的请求对象。
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
第一个参数是序列化的对象,您必须执行相反的操作。
我想问这个问题。 [看来现在已经有一种方法可以做到这一点](https://github.com/jaredhanson/passport/issues/111),但不幸的是,我对护照的理解并不十分熟悉它的实际工作原理。有人可以请回答这个解释'req'是如何在'passport.deserializeUser(function(id,done)''内访问的? – laggingreflex 2014-07-06 00:10:56