Express 的会话中间件提供了几个可配置的选项。
resave : '强制将会话保存回会话存储,即使在请求期间从未修改过会话。'
saveUninitialized : '强制将“未初始化”的会话保存到存储中。会话是新的但未修改时未初始化。
看来这两个选项都用于保存未修改的会话。有什么不同?
Express 的会话中间件提供了几个可配置的选项。
resave : '强制将会话保存回会话存储,即使在请求期间从未修改过会话。'
saveUninitialized : '强制将“未初始化”的会话保存到存储中。会话是新的但未修改时未初始化。
看来这两个选项都用于保存未修改的会话。有什么不同?
我想我会从一个基本的答案开始,我到目前为止的一些理解,然后一起改进它。重要问题已经“死”太久了。
从这里我明白区别是:
(未修改的“状态”与未初始化的状态不同)
resave : 对于任何请求
“即使未修改也强制保存会话”
saveUninitialized:关于会话的状态,如果它仍处于未初始化状态。
“强制将“未初始化”的会话保存到存储中。当会话是新的但未修改时,它是未初始化的。
基本上,会话仅在修改时才保存在存储中;如果您添加、删除或编辑会话 cookie(例如:)req.session.test = 'some value'
。如果您希望将所有会话保存在商店中,即使它们没有任何修改,请使用saveUninitialized: true
.
现在,重新保存也仅在会话变量/cookie 更改时发生。如果您想保存,请始终继续resave: true