Node + Express + Passport:req.user未定义 [英] Node + Express + Passport: req.user Undefined
问题描述
我的问题类似于此一个,但有没有洞察他的解决方案。
我正在使用通过Instagram的护照验证。认证成功后,用户被指向/。在这一点上,请求具有用户对象(也称它正在工作)。但是,一旦我重定向,req.user是未定义的。 :'(
奇怪的是,护照每个请求都调用了这个用户,它成功地获取了用户对象,但是沿着中间路的某个地方,req.user没有设置(或未设置)。
//成功验证,goto/
/ pre>
应用程序。 get('/',function(req,res){
//如果请求具有用户对象,请转到用户页面
if(req.user){
res.redirect (/ user /+ req.user._id);
}
res.render(index);
}
应用程序.get('/ user /:uid',function(req,res){
console.log(req.user)// undefined
}
解决方案你为应用程序设置了会话状态吗?你需要这样的东西...
app.use(session({secret:'anything'}));
app.use(passport.initialize());
app.use(passport.session());
My question is similar to this one, but there was no insight into his solution.
I'm using Passport to auth using Instagram. After successful auth, users are directed to "/". At this point, the request has the user object (aka it's working). However, once I redirect, the req.user is undefined. :'(
The odd part is that passport.deserializeUser is being called with each request. It's successfully getting the user object, but somewhere along the middleware road, req.user is not being set (or being unset).
// on successful auth, goto "/" app.get('/', function(req, res) { // if the request has the user object, go to the user page if (req.user) { res.redirect("/user/" + req.user._id); } res.render("index"); } app.get('/user/:uid', function(req, res) { console.log(req.user) // undefined }
解决方案Have you set up session state for your app? You need something like this...
app.use(session({ secret: 'anything' })); app.use(passport.initialize()); app.use(passport.session());
这篇关于Node + Express + Passport:req.user未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!