2016-06-08 91 views
2

我有我的路線設置如下圖所示節點表達過多的重定向

,當我瀏覽到「http://localhost/」我得到一個錯誤說「本地主機重定向你太多次」和頁面的URL(顯示在瀏覽器的地址欄)是http://localhost/!/dashboard - 所以它看起來就像是被重定向,但我不明白爲什麼它陷入無限循環

// Public Routes 
app.use('/', function(req,res){ 
     res.redirect('/!/dashboard'); 
}); 
app.use('/login', routes.login); 
app.use('/!/dashboard', isLoggedIn, routes.dashboard); 

// Check If Logged In 
function isLoggedIn(req,res,next){ 
    if (req.isAuthenticated()){ 
     return next(); 
    } else { 
     res.redirect('/login'); 
    } 
}; 
+0

什麼是你的'routes.login'是什麼樣子? (具體來說,任何重定向到'/'或儀表板?) –

+0

@DominicTobias - 獲取routes.login沒有重定向它只是呈現頁面,但POST到routes.login確實有成功的身份驗證後重定向它passportjs它有一個'返回res.redirect('/!/儀表板')' –

+0

請包括'routes.dashboard'代碼 – peteb

回答

3

你不應該使用app.use('/', ...),因爲這將匹配任何URL 開始與一個/

相反,使用app.all

app.all('/', function(req,res){ 
    res.redirect('/!/dashboard'); 
}); 
app.use('/login', routes.login); 
app.use('/!/dashboard', isLoggedIn, routes.dashboard); 
+0

謝謝 - 這是解決它 –

0

古典錯誤會站在你的Apache配置/ Nginx的。在你的代碼中,你似乎在使用80端口,我相信你並沒有使用端口,所以你會通過Apache或Nginx代理你的請求。

(無法評論,因此,即使這是一個貧窮的答案,我會相應地更新它進一步評論)