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
})
}));
基本上我有一个 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
})
}));