我在尝试在我的应用中实现一些中间件时遇到了一些问题
特别是,app.use()
似乎没有抓住,我不明白为什么
以下是我的内容。
routes / index.js
var Sessions = require('../events');
module.exports = exports = function(app) {
app.use(Sessions.isLoggedIn);
//app.use() does not catch but this does
//app.all('*', Sessions.isLoggedIn);
// Home Page
app.get('/', displayHome);
app.get('/:library/:books', displayLibrary);
}
events.js
module.exports = exports = {
isLoggedIn: function(req, res, next) {
console.log('isLoggedIn');
return next();
}
有关为什么app.use()
没有捕获的任何建议?
更新
以下是 ape.js
app.configure(function() {
app.set('port', process.env.VCAP_APP_PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(express.compress()); // compress responses
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(expressValidator);
app.use(express.cookieParser('locket'));
app.use(express.cookieSession({
key: 'locket',
secret: 'mySecret',
cookie: {httpOnly: true, expires: 0, path: '/'}
}));
// cache every file going out
app.use(function(req, res, next) {
if (!res.getHeader('Cache-Control')) {
res.setHeader('Cache-Control', 'public, max-age=' + (86400 / 1000));
}
next();
});
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler({showStack: true, dumpExceptions: true}));
});
routes(app);
答案 0 :(得分:1)
路由器在您的中间件功能有机会运行之前响应请求。
app.js设置了其他几个中间件函数,然后是use
s app.router
。然后调用您的routes / index.js文件,use
是一个新的中间件函数,在 app.router
之后添加。
use
isLoggedIn
函数,或者将其专门用于需要检查登录状态的路由:
app.get('/', Sessions.isLoggedIn, function(req, res) { ... });