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