2015-10-17 66 views
1

我正試圖將我網站上的所有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

+0

哪個版本的快遞? –

+0

@ChrisL Express 4.12.4 – MattDionis

+0

你在任何地方都有「/」路線嗎?嘗試把app.get('/',function(req,res){...});在全線路線上方? –

回答

1

您也可以處理你的條件語句的路線:

'use strict'; 

var path = require('path'); 

var index = function(req, res) { 
    if (req.user) { 
    res.sendFile(path.join(__dirname, '../assets', 'index.html')); 
    } if (req.url === '/') { 
    ** Handle Case Here ** 
    } 
    else { 
    res.sendFile(path.join(__dirname, '../assets', 'signin.html')); 
    } 
}; 

module.exports = { 
    index: index 
}; 

好吧,我做了一些研究:一個偉大的文章和可能的解決方案在這裏:(不知道它是否適合你的使用情況)

http://evanhahn.com/express-dot-static-deep-dive/

app.use(express.static(myStaticPath, { 
    index: ['jokes.txt', 'index.html'] 
}) 

你可以簡單地給文件的數組作爲索引,如果第一個被發現的,它是服務,如果沒有,二是服務,等等。