saveUninitialized和resave有什么区别?(涉及IT技术)

14

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

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

saveUninitialized:'强制保存“未初始化”的会话到存储器中。当会话是新的但没有被修改时,会话处于未初始化状态。'

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


2个回答

12

我想先提供一个基本回答,我的一点了解,并一起改善它。重要的问题已经“死”太久了。

这里我理解到区别是:

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

resave: 对于任何请求

  • 会话中没有任何内容需要更改(没有登录等)。
  • 需要更改会话(已登录)

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

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

  • 仅当未被修改时,会话中没有任何内容需要更改(没有登录等)。

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


4

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

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


如果saveUninitialized的值为“True”,但是会话根本没有被修改,会发生什么?我知道它会将会话存储在数据库中,但是会话cookie是否仍然会被设置? - Neel Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接