gpt4 book ai didi

node.js - session 数据如何存储在服务器端的 NodeJS 中?

转载 作者:行者123 更新时间:2023-12-03 12:14:54 26 4
gpt4 key购买 nike

我是 NodeJS 的初学者。我正在研究一个简单的基于 session 的用户授权来尝试一下,它运行得非常好,因为互联网上有很多易于理解的示例。我使用了 express-session 和以下代码:

app.use(session({
key: 'userid',
secret: 'hojoborolo',
resave: false,
saveUninitialized: false,
cookie: {
expires: 600000
}
}));

创建了一个简单的 session ,然后我就可以使用 req.session 访问它目的。

我去了 express-session文档以获取有关 session 数据的更多信息。上面写得很清楚 “ session 数据不保存在 cookie 本身,只保存 session ID。 session 数据存储在服务器端。默认的服务器端 session 存储是 MemoryStore。”

像 PHP 一样,简单的地方 PHPSESSID session数据存储在默认临时目录 /tmp下的一个文件中在服务器端,在哪里以及如何 MemoryStore将数据存储在服务器端并利用它?如何 MemoryStore基本有效?

附注:来自 PHP 背景

最佳答案

您在开始使用 session 方面走在正确的轨道上,但如果您正在创建生产应用程序,您将需要切换到内置 MemoryStore 以外的其他选项。如您所见 in the documentation :

Warning The default server-side session storage, MemoryStore, is purposely not designed for a production environment. It will leak memory under most conditions, does not scale past a single process, and is meant for debugging and developing.



MemoryStore 就像听起来一样 - 它将 session 存储在内存中以供进程使用,这意味着如果您重新启动应用程序,您将丢失 session 。 PHP 请求是自包含的;每个请求都会产生一个新进程,该进程在请求完成时结束,因此默认情况下 session 必须存储在临时文件之类的地方。 Node.js/Express 有一个持续运行的进程来处理传入的所有请求,因此您可以将 session 存储在进程的内存中。您可以从概念上认为它与 app 没有什么不同。应用程序中的变量或任何其他全局变量。

因此,虽然在内存中存储 session 有效,但如果您的应用程序因任何原因重新启动,您将丢失所有 session ,这使其不适合生产环境(以及它泄漏内存的事实)。这对于测试以确保您的 session 代码有效很有用,但您将希望切换到 compatible session store可以持续处理 session (如您建议的那样,可以在/tmp 中,数据库等)

关于node.js - session 数据如何存储在服务器端的 NodeJS 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61736908/

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