NodeJS 在缓存内存中存储会话最佳实践

NodeJS store session in cache memory best practice


我需要为 SaaS 系统构建一个架构,它将在后端分离为几个 lambda 函数,其中之一是登录/注册服务,它应该验证用户凭据,如果成功则创建一个session 并 return 使用会话 cookie 将其发送给用户。
首先,我想到了使用服务器,这样我就可以实现到后端的单个入口点,并将请求转发到 lambdas 端点。

我真正想知道的是我应该如何进行身份验证过程以及我应该在哪里创建会话 cookie。
我想到了使用 express-session,我想到了一个选项 return 从我上面提到的 lambda 登录我想存储在会话中并实际在服务器上创建整个会话的有效负载(这是应用程序后端的单一入口点)。
我想知道的另一件事是如果我不想将会话数据保存在 Redis 或任何外部数据库上并使用服务器的缓存内存来存储它,我应该怎么做,因为我们不打算有很多在不久的将来应用程序的流量,这是生产的好习惯吗?如果不是,您认为什么是好的做法?
附件是我从 draw.io 中截取的图像,以显示我想到的过程的示例。
[![draw.io 图片][1]][1]

谢谢。

不,不建议将“express-session”与缓存一起使用,即默认存储选项。

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.

来源:https://www.npmjs.com/package/express-session

要查看商店列表,请单击 here


使用session store并不难,只需要服务器上有数据库实例运行即可。

最简单的选择之一是使用 MongoDB 作为会话存储。我主要使用“connect-mongo”将 MongoDB 设置为会话存储。

示例:

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true },
  store: connectMongo.create({ mongoUrl: "mongodb://Username:Password@localhost:27017/DatabaseName" })
}))