关于express.cookieSession()的几个问题

在我的node.js服务器(运行expresssocket.io )上,当一个人连接时,我将它们添加到一个数组中,并将它们在数组中的位置保存到它们的会话中,这样每个连接都可以访问它们自己的信息,如下所示:

 session.person_id = people.length; session.save(); people.push(new Person()); //people[session.person_id] => Person 

我在会话中唯一保存的是person_id 。 我一直在使用express.session()来处理这个问题,直到我开始将信息发送给一次连接的所有人。 当我循环连接并获得他们的会话时,有时(我不知道如何计算错误) session存在,但不是session.person_id

无论如何,我希望通过改变我存储会议的方式,它可以帮助我找出我的问题。 所以我有几个问题,我无法在任何地方find答案。

  1. 从express.cookieSession()的cookie存储在哪里? 服务器端还是客户端?
  2. express.cookieSession()是否允许在负载均衡器后面运行多个服务器?
  3. 使用express.cookieSession()时,用户是否可以操作会话数据?

1 – 从express.cookieSession()存储的cookie在哪里? 服务器端还是客户端?

cookie是从服务器的回复中发送的,浏览器将该cookie与每个请求一起发回。

2 – express.cookieSession()是否允许在负载均衡器后面运行多个服务器?

是的,如果您使用共享商店(如RedisStore)

3 – 使用express.cookieSession()时用户是否可以操作会话数据?

如果您使用签名的cookie,则不会(如果您在初始化会话时提供秘密,则默认使用会话cookie。

 var redis = require('redis').createClient(); app.use(express.session({ secret: "some random string", store: new RedisStore({client: redis}) }));