2011-09-14 49 views
1

Helllo 編寫一箇中間件庫來抽象oauth授權/認證過程並提供自己的認證策略。如何在快速/連接中使用數據修補程序請求obj

我被卡住了,因爲當我用數據修補請求時,它不會在任何路由請求上可用,但其他中間件(連接/快速文檔在這個主題上很差)。

如何製作數據條,以便每個請求都可以使用(除了靜態文件)?

謝謝。

詩我不使用其他可用的模塊,因爲這只是令人沮喪,使他們工作...

+0

你可以發佈你的app.use(...)和你的中間件的相關部分嗎?這是非常不明確的:''當我用數據修補請求時,它不會發送任何路由請求''',請你詳細介紹一下。我已經使用connect的中間件很多,這是一旦我們確定你的問題是什麼,我可以幫助你。 –

+0

@Ryan Olds我知道,修正它。代碼在這裏https://github.com/Cu7l4ss/express-oauth-logic-middleware/在lib.js – Cu7l4ss

+0

@Ryan Olds在StrategyMaster auth方法是中間件 – Cu7l4ss

回答

1

試試這個:

function authOrDie() { 
    return function(req,res,next) { 
    console.log(req.isAuthenticated()); 
    next(); // Have to call next to continue to the next middleware 
    }; 
} 

我認爲console.log(req.isAuthenticated());正在運行,它的工作,我還假定它正在打印false。另外,如果對靜態文件的請求不需要進行身份驗證,則應該將其移動到堆棧中高得多的位置。

+0

這個工程,但因爲它也是一箇中間件。但是,如果我嘗試訪問來自常規路線的附加用戶數據(例如/ posts),它將返回undefined。我想我可以重新附加應用程序中間件身份驗證邏輯本身的數據。我只是認爲應用程序中的中間件貫穿所有的路線和請求。 – Cu7l4ss

+0

中間件應該能夠添加到'req'中,只要某些東西沒有把它吹掉,它就應該在路由的req中可用,因爲它是同一個對象。 'req'通過引用向下傳遞給中間件,直到其中一個處理它或到達結尾。 express.routes是一箇中間件,處理請求的任何路由都會得到相同的'req'對象。如果沒有設置,那麼有些東西是不安定的。 –

+0

啊我也這麼認爲。 Route middware和plain app.configure中間件之間存在細微差別。不同之處在於,由於路由被訪問,所以它是app.configure中間件鏈中的第一個,所以(根據我的理解),沒有其他方法可以做到這一點,但確保也存在路由中間件(可以是相同的方法as authOrDie fe) – Cu7l4ss

相關問題