如何在具有多个服务器的 NodeJS 中检索 SessionID?
How to retrieve SessionID in NodeJS with multiple servers?
我是 NodeJS 新手。我正在开发一个 REST API 并使用 express-session 来处理会话。因此,要获取我正在使用的会话 ID
var sessionID = req.sessionID
这个sessionID是从服务器端生成的。所以,当我扩展到两个或更多服务器时,这是一个问题。例如,如果一台服务器关闭并且请求被重定向到另一台服务器(假设我有一个负载平衡器),则会生成一个新的会话 ID。那么,有没有办法从客户端检索会话 ID?
好问题!启动和 运行 会话管理可能具有挑战性 - 特别是因为启动和 运行 节点中任何类型的复杂会话管理,您需要大量不同的包,每个包都有自己的文档集。以下是如何使用 MongoDB:
设置会话管理的示例
'use strict';
var express = require('express'),
session = require('express-session'),
cookieParser = require('cookie-parser'),
mongoStore = require('connect-mongo')(session),
mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/someDB');
var app = express();
var secret = 'shhh';
app.use(session({
resave: true,
saveUninitialized: true,
secret: secret,
store: new mongoStore({
mongooseConnection: mongoose.connection,
collection: 'sessions' // default
})
}));
// ROUTES, ETC.
var port = 3000;
app.listen(port, function() {
console.log('listening on port ' + port + '.')
});
此配置允许您访问 req.sessionID
,但现在如果用户的会话 cookie 尚未过期,它应该会在应用程序服务器中持续存在。
我希望这有效!
我是 NodeJS 新手。我正在开发一个 REST API 并使用 express-session 来处理会话。因此,要获取我正在使用的会话 ID
var sessionID = req.sessionID
这个sessionID是从服务器端生成的。所以,当我扩展到两个或更多服务器时,这是一个问题。例如,如果一台服务器关闭并且请求被重定向到另一台服务器(假设我有一个负载平衡器),则会生成一个新的会话 ID。那么,有没有办法从客户端检索会话 ID?
好问题!启动和 运行 会话管理可能具有挑战性 - 特别是因为启动和 运行 节点中任何类型的复杂会话管理,您需要大量不同的包,每个包都有自己的文档集。以下是如何使用 MongoDB:
设置会话管理的示例'use strict';
var express = require('express'),
session = require('express-session'),
cookieParser = require('cookie-parser'),
mongoStore = require('connect-mongo')(session),
mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/someDB');
var app = express();
var secret = 'shhh';
app.use(session({
resave: true,
saveUninitialized: true,
secret: secret,
store: new mongoStore({
mongooseConnection: mongoose.connection,
collection: 'sessions' // default
})
}));
// ROUTES, ETC.
var port = 3000;
app.listen(port, function() {
console.log('listening on port ' + port + '.')
});
此配置允许您访问 req.sessionID
,但现在如果用户的会话 cookie 尚未过期,它应该会在应用程序服务器中持续存在。
我希望这有效!