2015-06-14 70 views

回答

2

如果您正在使用护照,您只需访问req.user,因为它已经提到过。

考虑看看你的要点,我的猜测是,你的一些路线的定义比app.use(passport.initialize());app.use(passport.session());早得多,这意味着,如果收到请求get /opportunity_ids(例如),req.user还有待填充。

如果你走在堆得远一点,你会发现,所有的其它路由注入护照在行初始化后:

// Globbing routing files 
config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) { 
    require(path.resolve(routePath))(app); 
}); 

的解决办法是把所有的自定义在./app/routes/**/的护照启动之前定义的路由,并让路由文件自动填充。 req.user将不会被定义。

每个中间件放置的顺序非常重要,如果顺序发生变化,可能会产生意外的行为。

1

如果用户登录,passport.js将为每个请求创建一个用户对象。它将该用户设置为请求中的一个属性(req.user)。您可以通过该对象访问用户的任何属性。例如:req.user.username,req.user.email

+0

然后我必须做错了=我的req.user是未定义的。这里是整个文件的要点:https://gist.github.com/eugene-goldberg/df34da0977a475056425 –