Tôi có ứng dụng Express với một số tuyến đường, chỉ hai trong số đó cần hỗ trợ phiên. Tôi đọc ở khắp mọi nơi rằng định nghĩa middleware (app.use (express.session ({...) chỉ áp dụng cho các tuyến đường mà đến sau khi nó, vì vậy tôi tạo ra mẫu này:NodeJS + Express - Áp dụng phần mềm trung gian phiên cho một số tuyến đường
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);
Nhưng điều này không
Nếu tôi di chuyển định nghĩa phần mềm trung gian phiên lên - mọi thứ hoạt động, nhưng tôi thấy các phiên đang được tạo khi gọi/đường dẫn1 (đây là những gì tôi muốn tránh)
Ai đó có thể giải thích cách ứng dụng đơn có thể sử dụng phiên chỉ trong một số tuyến đường.
Cảm ơn!
///// CẬP NHẬT //////
Sau khi đào sâu thêm - I figured it out:
Không sử dụng: app.use(express.session({ ... }));
Thay vào đó - xác định như sau:
var sessionMiddleware = express.session({
//session configurations
});
function sessionHandler(req, res, next) { sessionMiddleware(req, res, next); }
Sau đó, áp dụng xử lý trên các tuyến đường cụ thể/s mà cần sự hỗ trợ phiên:
app.get('/path_that_need_session', sessionHandler, function (req, res) {
/* Do somthing with req.session */
});
Để làm cho câu trả lời của bạn rõ ràng hơn, tại sao không viết câu trả lời và chấp nhận câu trả lời (OK). Điều này làm việc thực sự tốt cho tôi để cô lập phiên cho các tuyến đường nhất định. Cảm ơn. –