0

我在尝试在我的应用程序中实现一些中间件时遇到了一些问题。
特别是,app.use()似乎没有抓住,我不明白为什么。
以下是我所拥有的大致内容。

路线/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);

}

事件.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);
4

1 回答 1

1

路由器在您的中间件功能有机会运行之前响应请求。

app.js 设置了其他几个中间件函数,然后use是 s app.router。然后调用你的 routes/index.js 文件,这use是一个新的中间件函数, app.router.

use您在路由器之前isLoggedIn的功能,或专门将其与需要检查登录状态的路由一起使用:

app.get('/', Sessions.isLoggedIn, function(req, res) { ... });
于 2013-09-17T22:20:00.760 回答