node.js表示会话无状态还是有状态?

时间:2014-08-18 08:00:10

标签: javascript node.js session express

我实际上正在使用快递会议,我有一个问题: 是node.js,还是更特别是express-session sateless还是有状态的?

事实上,当我们需要使用session with node时,我们使用req.session.foo,这意味着我们使用请求来获取会话

那么,服务器上是否存在任何内容(sateful)?在这种情况下,为什么我们不能使用"全局变量"喜欢在php?

在另一种情况下,这意味着我们有一个无状态服务器,sessionID值是否与令牌密钥对应?

你能帮我理解一下这个中间件吗?

感谢您提前

3 个答案:

答案 0 :(得分:4)

  

服务器上存储了什么

是的,这就是会议的工作方式

  

为什么我们无法使用"全局变量"比如在php

因为基于节点的HTTP服务器中的全局是服务器的全局而不是请求。你的会话会互相覆盖。

答案 1 :(得分:2)

会话是关于在服务器内存储有关特定客户端的信息,因此您无法谈论严格的无状态服务器"了。


"全局变量"在PHP中也是按请求。

请注意,每个请求都会调用一次PHP代码,而Node代码会一直运行并提供多个请求,因此您需要明确地接受特定请求的会话。

答案 2 :(得分:2)

我认为你正在寻找的是一种存储关于当前用户的状态的方法,而不必使用服务器连接的存储机制(Redis,MySQL,等等)。

这正是cookie-session所做的。它以cookie的形式在客户端上存储状态,但也存储HMAC签名以验证客户端未更改信息。这允许客户端保持自己的状态,但也确保客户端可以信任的信息。

您将需要一个用于签署会话cookie的密钥(或多个密钥),而不是会话存储提供程序。

另外,我建议查看源代码,因为有些文档有点过时了。