用快递和骨干pipe理会话

我想使用来自express.js的会话,我知道我们可以从req.session.id中获得一个会话ID,而且我也知道这个ID总是不同的(每次我们访问一个路由):

我看到一些人build议在全球范围内获取和保存会话,但问题是(除非我错了),如果我保存会话,当用户连接我的应用程序这种方式:

app.get('/init', function(req, res) { global.session = req.session; }); 

如果User_1连接我的应用程序,那么User_2连接我的应用程序和User_1仍然存在,那么global.session将包含User_2会话的值,即使对于User_1也是如此?

如果我是对的,如何正确保存会话? 我想到了一个由init路由中的req.session.id索引的数组,但是因为即使同一个用户访问相同的路由(这是否正常?),它总是不同的,这是不可能的。

您发现pipe理会话的最佳方式是什么?

谢谢 !

不要将会话保存在全局variables中,因为这意味着每个后续访问者都将使用和修改相同的variables(使用同一个express实例来处理所有进来的请求)。您可以使用Express中内置的中间件在开发应用程序时将会话存储在内存中。 在开始声明你的路由之前,只需要放入下面的中间件:

 app.use(express.cookieParser()); /* Parses cookies. */ app.use(express.cookieSession({ secret: 'yoursecret' })); /* Handles sessions stored in your cookies. */ // ... your other middleware app.get('/', function(req, res) { if (req.session) { res.json(req.session); } else { res.send('You have no session.'); } }); 

对于生产,build议使用类似Redis的东西来存储会话。