我正试图将我网站上的所有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){...});在全线路线上方? –