了解NodejS中的Express会话

时间:2018-12-13 04:01:15

标签: node.js cookies

我正在尝试从文档中理解快速会话,但我无法获得一些要点

考虑这段代码,这是我在一个仓库中找到的

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

现在,我理解了它们的功能,但无法理解它们的实现,因此,是否有人可以展示其中任何一个的实现?

1 个答案:

答案 0 :(得分:4)

这些是我的理解。我可能是错的。

  1. 可能是resave用于某些存储驱动程序,以使会话保持活动状态!?我现在什么都没想到。
  2. saveUninitializedtrue的意思,会话将始终被创建。实验:创建一个简单的快递服务器。配置快速会话并保持该值为true。不要手动创建任何会话。从浏览器命中服务器的任何端点。打开开发人员选项并查找cookie。您将看到一个cookie生成。现在,删除cookie。将值更改为false并再次命中端点。这次不会产生Cookie。
  3. 如果您不提及任何商店,那么所有会话都将存储在MemoryStore中,该{{1}}仅用于开发目的。因此,在生产中,您应始终使用某种持久性存储。 storage options数量很多。