在我的node.js服务器(运行express和socket.io)上,当一个人连接时,我将它们添加到一个数组并将它们在阵列中的位置保存到它们的会话中,这样每个连接都可以访问自己的信息,如下所示: ses
session.person_id = people.length; session.save(); people.push(new Person()); //people[session.person_id] => Person
我在会话中保存的唯一内容是person_id.我一直在使用express.session()来处理这个问题,直到我开始向立即连接的所有人发送信息之前一直工作正常.当我遍历他们的连接并获得他们的会话时,有时(我无法弄清楚如何欺骗错误)会话存在但不存在session.person_id.
无论如何我希望通过改变我存储会话的方式,它可以帮助我弄清楚我的问题.所以我有几个问题,我无法在任何地方找到答案.
> express.cookieSession()存储的cookie在哪里?服务器端还是客户端?
> express.cookieSession()是否允许在负载均衡器后面运行多个服务器?
>使用express.cookieSession()时,用户是否可以操作会话数据?
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}) }));