2012-08-12 70 views
0

我正在開發一個node.js應用程序,我正在使用護照來構建OAuth身份驗證系統。配置完成後,我可以通過每個資源負載中的請求對象訪問該用戶。但我的問題是:如何在每個URL負載之前檢查 - 使用app.get('/',function(..){...})定義的資源 - 如果用戶被鎖定並重定向客戶端loged。我可以在每種方法中添加一個測試,但這不是我想要的。在加載URL之前重定向

謝謝!

回答

2

你要來檢查的用戶是否登錄中間件

isAuthenticated = function (req, res, next) { 
    if (req.user) 
    return next(); // All good, let the route handler process the request. 
    else 
    res.redirect('/login'); // Not logged in. 
} 

,並使用它的每一個需要先登錄路線:

app.get('/something', isAuthenticated, function (req, res) { 
    // Only in here if the user is authenticated. 
}); 

您也可以使用中間件在每個路由上,通過做app.use(isAuthenticated),但你需要在方法中有額外的邏輯來創建無限重定向循環到/login等。

+1

我打包了這個功能ty轉換爲[connect-ensure-login](https://github.com/jaredhanson/connect-ensure-login)。它還具有方便的選項,可以讓用戶登錄後返回原先請求的頁面。 – 2012-08-13 16:57:43