如何使用 connect-mongodb-session 包将同一个 mongo 商店从一个节点应用程序引用到另一个应用程序

问题描述

我有两个节点应用程序项目,其中一个用于登录身份验证服务器(server_app.js),另一个用于仪表板节点项目(app_dashboard.js)。我将会话存储在名为 session 的 mongodb 存储集合中。

server_app.js

const mongoDbStore = require('connect-mongodb-session')(session);
const uuidv4 = require('uuid').v4;
const store = new mongoDbStore({
    uri: MONGODB_URI,collection: 'sessions'
});
app.use(session({
    secret: uuidv4(),cookie: {
        path: '/',domain: 'localhost',},store: store,name: 'sid',}))

现在我在成功登录 cookie 后将 session_id 转发到另一个应用程序,我想在 app_dashboard.js 的会话中引用同一个 MongoDB 存储,我如何使它工作以引用 server_app.js 中使用的同一个 mongo 存储验证我的会话?

app_dashboard.js

app.use(session({
    secret: uuidv4(),resave: false,saveUninitialized: false,// name: 'sessionid',// store: store
}))

解决方法

storesession 使用相同的选项。您需要为两者使用相同的 secret,因此请为其生成一个加密安全的随机字符串,并通过环境变量 (process.env) 将其传递给两者。