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 上重新安装应用程序?