몇 가지 경로가 포함 된 Express 응용 프로그램이 있으며 두 개만 세션을 지원해야합니다. 나는 미들웨어 정의 (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);
을하지만이되지 않습니다 일 :에/경로 2 res.session은 정의되지 않습니다
내가 세션 미들웨어 정의를 이동하는 경우 - 모든 작품,하지만 난 세션이 호출 할 때 생성되고있다/경로 1은
(이것이 내가 피하고 싶은 것입니다) 것을 알 수있다. 누군가가 어떻게 단일 응용 프로그램에만 세션을 사용할 수 있습니다 설명 할 수있는.
감사합니다.
///// UPDATE //////
더 파고 후 - 나는 그것을 알아 냈 :
는는 사용하지 마십시오 : - :
app.use(express.session({ ... }));
대신 다음을 정의
app.get('/path_that_need_session', sessionHandler, function (req, res) {
/* Do somthing with req.session */
});
:
var sessionMiddleware = express.session({
//session configurations
});
function sessionHandler(req, res, next) { sessionMiddleware(req, res, next); }
그런 다음 세션 지원을 필요로하는 특정 경로/S에 핸들러를 적용
답변을보다 명확하게 작성하려면 답변으로 작성하고 동의하십시오 (정상입니다). 이것은 세션을 특정 경로에 격리시키는 데 정말로 도움이되었습니다. 감사. –