2015-06-14 39 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 –