いくつかのルートを持つExpressアプリケーションがありますが、そのうちの2つだけがセッションをサポートする必要があります。 私はミドルウェアの定義(app.use(express.session({...は)それだけの後に来るルートに適用されますので、私はこのサンプルを作成したことをどこにでも読み:NodeJS + Express - いくつかのルートにセッションミドルウェアを適用する
var express = require('express');
var app = express();
app.use(express.bodyParser());
app.get('/path1', function (req, res) {
res.send('text response');
});
app.use(express.cookieParser());
app.use(express.session({
secret: 'secret',
cookie: { maxAge: new Date(Date.now() + 2 * 60 * 1000) }
}));
app.get('/path2', function (req, res) {
res.session.test = { "test": "test" };
res.send('text response');
});
app.listen(8088);
しかし、これにはありません セッションミドルウェアの定義を上に移動すると、すべてが機能しますが、/ path1を呼び出すときにセッションが作成されていることがわかります(これは避けたいものです)。
誰かがどのように単一のアプリケーションがセッションを使用できる方法を説明することができますいくつかのルート。
ありがとうございます!より多くの掘削後
///// UPDATE //////
- 私はそれを考え出した:
を使用しないでください:app.use(express.session({ ... }));
代わり - 次の内容を定義します。
var sessionMiddleware = express.session({
//session configurations
});
function sessionHandler(req, res, next) { sessionMiddleware(req, res, next); }
そして、セッションサポートを必要とする/ sの特定のルート上のハンドラを適用します。
app.get('/path_that_need_session', sessionHandler, function (req, res) {
/* Do somthing with req.session */
});
答えをより明確にするには、答えとして書いてそれを受け入れてみましょう(これは問題ありません)。これはセッションを特定のルートに隔離するためにはうまく機能しました。ありがとう。 –