理解Node.js中的Express会话

3

我正在阅读express-session的文档,但有些地方无法理解。

请看这段代码,是我从一个仓库中找到的:

app.use(session({
  resave: true,
  saveUninitialized: true,
  secret: 'aaabbbccc',
  store: new MongoStore({
    url: MONGO_URI,
    autoReconnect: true
  })
})); 

现在,我大概明白这里正在发生什么,但还是想确认一下。

resave: true 根据文档的说明,这意味着它将强制将会话保存回会话中,即使它没有改变。好的,没问题吗?但是当会话没有改变时,为什么有人要强制保存会话,这会产生什么区别呢?

saveUninitialized: true 这里我们也为非登录用户存储会话吗?

最后,如果有人能解释一下这行代码(我无法理解)

 store: new MongoStore({
        url: MONGO_URI,
        autoReconnect: true
      })

接下来,以上代码中,库的作者是否没有将会话存储在cookie中?而只是存储了cookie标识符?

最后,在描述中他们提到了cookie.httpOnlycookie.expirescookie.domain

现在,我理解了它们的功能,但无法理解它们的实现,如果有人能展示其中任何一个的实现,那就太好了。


2
有关重新保存选项,请查看:https://dev59.com/g1kS5IYBdhLWcg3wFi-k - SanSolo
1个回答

5

以下是我的理解,可能会有误。

  1. resave 可能用于某些存储驱动程序以保持会话活动状态!?我暂时没有任何想法。
  2. 如果 saveUninitialized 设置为 true,则会始终创建一个会话。实验:创建一个简单的 express 服务器。配置 express-session 并将该值设置为 true。不要手动创建任何会话。从浏览器访问服务器的任何端点。打开开发人员选项并查看 cookies。你会看到生成了一个 cookie。现在删除 cookie。将值更改为 false 并再次访问端点。这次不会生成 cookie。
  3. 如果未指定存储,则所有会话将存储在仅用于开发目的的 MemoryStore 中。因此,在生产中应始终使用某种持久性存储。有许多存储选项可供选择。

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