1

アプリ用の通常のミドルウェア スタックがあります。

  app.configure(function() {
    app.use(express.static(PUBLIC_DIR));
    app.use(express.favicon());
    app.use(express.bodyParser({
      keepExtensions: true,
      uploadDir: '/tmp/neighr'
    }));
    app.use(express.methodOverride());
    app.use(express.cookieParser());
    app.use(express.session({
      secret: '***REDACTED***',
      store: sessionStore,
    }));
    app.use(express.csrf());
    app.use((require('connect-flash'))());
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(function(req, res, next) {
      app.locals({
        _csrf: req.session._csrf,
        url: req.url,
        user: req.user,
        authenticated: req.isAuthenticated(),
        messages: {
          info: req.flash('info'),
          error: req.flash('error'),
          success: req.flash('success')
        }
      });
      next();
    });
    app.use(app.router);
    app.use(express.logger());
    app.use(express.errorHandler());
  });

ご覧のとおりexpress.static、これはスタック内の最初のものの 1 つであり、読み込み時間が長くなるだけのセッション全体を通過することなく静的リソースが提供されます。

ただし、すべてのセッション要素なしで提供したい動的データがいくつかあります。

app.get('/avatar/:id', function(req, res) {
  var fid = res.params.id;
  /* load binary from database */
  res.send(data);
});

このルートはapp.router、スタックの最後にある 内にあります。このルートや他のルートを宣言する方法を維持したいのですが、セッションミドルウェアの前にこれらを解析するためにどうすればよいですか?

将来、より多くのパラメーターを使用して、このような動的ルートがさらに増える可能性があります。

4

1 に答える 1