Node.js 处理与数据库的会话

Node.js Handle session with database

基本上我有一个 Node.js Web 应用程序,它使用 express-session 模块来处理会话。

它运行完美,但有 1 个期望破坏了我的这个选项。如果服务器崩溃或者我部署了一个新版本,会话就会被彻底清除,这对我来说是不可接受的。我不能在我的主服务器和我的备份服务器之间共享会话也是不好的。

所以我的目标是通过外部云数据库处理会话,只需将其视为 "casual mysql database"。

但关键是我对如何做到这一点感到困惑。我可以为会话分配唯一​​的 ID,并根据这些 ID 从数据库加载资源,但是如果这些会话被删除,我如何重新识别用户?

我缺乏很多关于会话的知识,但由于这对我来说是一个非常关键的话题,所以我 post 在这里提出一个问题。

您可以使用这些商店中的任何一个(或编写您自己的商店):

https://www.npmjs.com/package/express-session#compatible-session-stores

我正在使用连接 mongo 在我的 mongo 数据库中存储会话,代码如下所示 (app.js) :

import session from 'express-session';
const MongoStore = require('connect-mongo')(session);
...
...
    api.use(session({
        secret: global.config.secrets.session,
        saveUninitialized: false, // don't create session until something stored
        resave: false, //don't save session if unmodified
        store: new MongoStore({
            mongooseConnection: mongoose.connection,
            touchAfter: 24 * 3600 // time period in seconds
        })
    }));