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);

}

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);
4

1 に答える 1

1

ミドルウェア機能が実行される前に、ルーターがリクエストに応答しています。

app.js は、他のいくつかのミドルウェア関数を設定し、次にuses app.router. 次に、routes/index.js ファイルを呼び出します。このファイルは、 のuseに追加される新しいミドルウェア関数です。 app.router

useルーターの前isLoggedInに関数を使用するか、ログイン状態を確認する必要があるルートで特に使用します。

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