如何在NodeJS中检索具有多个服务器的SessionID?

时间:2015-10-01 02:07:29

标签: node.js session express express-session

我是NodeJS的新手。我正在开发REST API并使用快速会话来处理会话。因此,要使用

获取会话ID

var sessionID = req.sessionID

此会话ID是从服务器端生成的。因此,当我扩展到两个或更多服务器时,这是一个问题。例如,如果一台服务器关闭并且请求被重定向到另一台服务器(假设我有一台负载均衡器),则会生成一个新的会话ID。那么,有没有办法从客户端检索会话ID?

1 个答案:

答案 0 :(得分:5)

好问题!启动和运行会话管理可能具有挑战性 - 特别是因为要在节点中启动和运行任何类型的复杂会话管理,您需要大量不同的包,每个包都有自己的一组文档。以下是如何使用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未过期,它应该会在应用服务器上保留。

我希望这有效!