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

bybem2ql  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(156)

在我的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不存在。
无论如何,我希望通过改变我存储会话的方式,它可以帮助我找出我的问题。所以我有几个问题到处都找不到答案。
1.express.cookieSession()中的cookie存储在哪里?服务器端还是客户端?
1.express.cookieSession()是否允许在负载均衡器后面运行多个服务器?
1.使用express.cookieSession()时,用户是否可以操作会话数据?

u0sqgete

u0sqgete1#

1 -express.cookieSession()中的cookie存储在哪里?服务器端还是客户端?
cookie是在服务器的回复中发送的,浏览器在每次请求时都会发送回该cookie。
2 -express.cookieSession()是否允许在负载均衡器后面运行多个服务器?
是的,如果您使用共享存储(如RedisStore)
3 -当使用express.cookieSession()时,用户是否可以操作会话数据?
如果您使用签名的cookie(当您在初始化会话时提供密码时,express中的会话cookie的默认值),则不会。

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

相关问题