gpt4 book ai didi

node.js - 何时在快速 session 中使用 saveUninitialized 和重新保存

转载 作者:IT老高 更新时间:2023-10-28 21:57:46 27 4
gpt4 key购买 nike

我是 MEAN 堆栈的新手。我读了快速 session github doc但是有一些我不清楚的选项。这些选项是 saveUninitializedresave

谁能用examples解释一下使用saveUninitializedresave有什么好处,如果改了会有什么效果这些选项中的 bool 值。

语法:-

app.use(session({
resave: false,
saveUninitialized: true,
}))

最佳答案

假设 session 是全局启用的(对于所有请求)。

当客户端发出 HTTP 请求并且该请求不包含 session cookie 时,express-session 将创建一个新 session 。创建一个新 session 会做一些事情:

  • 生成唯一的 session ID
  • 将该 session ID 存储在 session cookie 中(以便可以识别客户端发出的后续请求)
  • 创建一个空 session 对象,如 req.session
  • 根据saveUninitialized的值,在请求结束时, session 对象将被存储在 session 存储中(通常是某种数据库)

如果在请求的生命周期内 session 对象没有被修改,那么在请求结束并且当 saveUninitializedfalse 时,(仍然为空,因为未修改) session 对象不会存储在 session 存储中。

这背后的原因是,这将防止在 session 存储中存储大量空 session 对象。由于没有什么有用的东西可以存储, session 在请求结束时被“遗忘”。

您希望何时启用此功能?例如,当您希望能够识别重复访问者时。您可以识别出这样的访问者,因为他们发送了包含唯一 ID 的 session cookie。

关于resave:这可能必须为不支持“touch”命令的 session 存储启用。它的作用是告诉 session 存储一个特定的 session 仍然处于事件状态,这是必要的,因为一些存储会在一段时间后删除空闲(未使用)的 session 。

如果 session 存储驱动程序没有实现触摸命令,那么您应该启用 resave 以便即使在请求期间 session 没有更改,它仍然会在存储中更新(从而将其标记为事件状态)。

因此,是否需要启用此选项完全取决于您使用的 session 存储。

关于node.js - 何时在快速 session 中使用 saveUninitialized 和重新保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40381401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com