我正試圖將我網站上的所有GET
請求(API請求除外)發送給控制器,該控制器在顯示頁面之前檢查登錄用戶的存在。否則,如果當前未登錄,則用戶將被髮送到登錄頁面。快速似乎忽略根路由的控制器
下面的結構適用於除根路線以外的任何事情('/'
)。例如,如果我嘗試將/admin
或/games
作爲非登錄用戶登錄,我會將其正確發送到登錄頁面。同樣,如果我在每個頁面上簽名顯示正確(注意:我正在使用AngularJS客戶端)。我遇到的一個問題是,當我點擊根路線時,應用程序嘗試顯示index.html
,而未檢查用戶是否登錄。我很困惑,爲什麼該路線的處理方式不同,以及爲什麼我的pagesController
似乎從未調用過爲這條路線。我已經做了一些'控制檯日誌記錄',並確認pagesController.index
被稱爲每個非API路由,但'/'
。
routes.js
'use strict';
var controllers = require('./controllers');
var v1Router = require('./routes/api/v1');
var pagesController = controllers.pagesController;
module.exports = function(app) {
app.use('/api', v1Router);
app.get('/logout', function(req, res) {
req.logout();
res.redirect('/');
});
app.get(['*'],
pagesController.index
);
};
pages.js
'use strict';
var path = require('path');
var index = function(req, res) {
if (req.user) {
res.sendFile(path.join(__dirname, '../assets', 'index.html'));
} else {
res.sendFile(path.join(__dirname, '../assets', 'signin.html'));
}
};
module.exports = {
index: index
};
更新:我改變了我的根從/
到/a
在我的客戶端路由,一切完美的作品。無論出於何種原因,/
未通過pagesController.index
運行。隨着該行刪除pagesController.index
正常呼籲/
app.use(express.static(path.join(__dirname, 'assets')));
,但是沒有我的靜態資產的供應,從而簡單地刪除該行的作用:
更新2:所以這行我app.js
造成問題沒有解決它。如何正確提供我的靜態資產,而忽略index.html
?
哪個版本的快遞? –
@ChrisL Express 4.12.4 – MattDionis
你在任何地方都有「/」路線嗎?嘗試把app.get('/',function(req,res){...});在全線路線上方? –