saveUninitialized 和重新保存有啥区别?

Posted

技术标签:

【中文标题】saveUninitialized 和重新保存有啥区别?【英文标题】:What's the difference between saveUninitialized and resave?saveUninitialized 和重新保存有什么区别? 【发布时间】:2015-10-01 20:33:30 【问题描述】:

Express 的会话中间件提供several configurable options。

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

saveUninitialized:'强制将“未初始化”的会话保存到商店。当一个会话是新的但未被修改时,它是未初始化的。'

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

【问题讨论】:

When use saveUninitialized and resave in express-session的可能重复 【参考方案1】:

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

来自this我理解的区别是:

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

重新保存:对于任何请求

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

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

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

仅未修改,会话中无需更改任何内容(无需登录等)。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

如果 saveUninitialized 值为“True”但会话根本没有修改怎么办。我知道它会将会话存储在数据库中,但会话 cookie 是否仍会被设置?

以上是关于saveUninitialized 和重新保存有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

修改会话不保存

有啥方法可以保存数据,即使在没有钥匙串的情况下在 ios 上重新安装应用程序?

Node.js express-session 代理选项有啥作用?

windows的切换用户、注销和重新启动有啥区别?

虚拟机快照有啥作用???

路由器断电重启和REST重启有啥区别