Node + Express + Passport:req.user未定义 [英] Node + Express + Passport: req.user Undefined

查看:254
本文介绍了Node + Express + Passport:req.user未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题类似于此一个,但有没有洞察他的解决方案。



我正在使用通过Instagram的护照验证。认证成功后,用户被指向/。在这一点上,请求具有用户对象(也称它正在工作)。但是,一旦我重定向,req.user是未定义的。 :'(



奇怪的是,护照每个请求都调用了这个用户,它成功地获取了用户对象,但是沿着中间路的某个地方,req.user没有设置(或未设置)。

  //成功验证,goto/
应用程序。 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
}
/ pre>

解决方案

你为应用程序设置了会话状态吗?你需要这样的东西...

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆