14

Express 的会话中间件提供了几个可配置的选项

resave : '强制将会话保存回会话存储,即使在请求期间从未修改过会话。'

saveUninitialized : '强制将“未初始化”的会话保存到存储中。会话是新的但未修改时未初始化。

看来这两个选项都用于保存未修改的会话。有什么不同?

4

2 回答 2

11

我想我会从一个基本的答案开始,我到目前为止的一些理解,然后一起改进它。重要问题已经“死”太久了。

这里我明白区别是:

(未修改的“状态”与未初始化的状态不同)

resave : 对于任何请求

  • 会话中的任何内容都不需要更改(无需登录等)。
  • 需要更改会话(已登录)

“即使未修改也强制保存会话”

saveUninitialized:关于会话的状态,如果它仍处于未初始化状态。

  • 不仅没有修改,会话中的任何内容都不需要更改(无需登录等)。

“强制将“未初始化”的会话保存到存储中。当会话是新的但未修改时,它是未初始化的。

于 2016-04-18T08:13:35.717 回答
4

基本上,会话仅在修改时才保存在存储中;如果您添加删除编辑会话 cookie(例如:)req.session.test = 'some value'。如果您希望将所有会话保存在商店中,即使它们没有任何修改,请使用saveUninitialized: true.

现在,重新保存也仅在会话变量/cookie 更改时发生。如果您想保存,请始终继续resave: true

于 2017-01-11T16:33:18.670 回答