1

我正在使用 express-session、passport、connect-mongo 和 mongodb-atlas 最新版本来创建会话并将它们保存在服务器上,问题是当 app.use(passport.session()) 时,甚至会创建此会话如果用户没有登录。

app.use(session({
    // key: "id",
    secret: process.env.SESSION_SECRET,
    cookie: {
        httpOnly: true,
        sameSite: true,

        // secure: process.env.IN_PROD,
        maxAge: 10800000,
    }, // three hours in miliseconds
    store: new MongoStore({
        mongooseConnection: mongoose.connection,
        autoReconnect: true,
        collection: "admin.mySessions",
        serialize: serialize

    }),
    resave: false,
    saveUninitialized: false,
    name: 'Id'
}));

这导致当护照被初始化和护照会话时,cookie 与会话 id 一起保存并且会话被保存在 mongodb mi 问题是如何只为登录的用户保存会话

4

1 回答 1

0

您好,伙计,我不知道 mongo-session,但是从您的解释中,我了解到您正在为用户创建令牌,即使他们没有登录。我建议您每次用户点击登录 API 时创建一个新令牌,并在他注销后使令牌过期。通过遵循此令牌仅针对活动用户生成。

于 2019-04-05T08:43:41.813 回答