【发布时间】:2020-01-23 05:45:00
【问题描述】:
目前,我要求并在index.js 顶部定义express-session 的选项,如下所示:
const session = require(`express-session`)({
secret: `MyEpicSecret`,
resave: true,
saveUninitialized: true,
cookie: {maxAge: 1000 * 60} // 1 minute: for testing
}),
我将它与我的快递应用程序一起使用:
app.use(session);
这个布局很重要,因为我后来将session 传递到index.js 底部的socket.io 模块:
require(`./modules/socket.js`)(server, session);
通过上述设计流程,我的应用程序可以正常运行,并且可以完美地处理和管理会话。我现在的目标是实现 connect-mongo 以将会话保存到 MongoDB。他们的documentation 有点模糊,但据我所知,我需要先要求express-session 模块,然后在app.use() 中定义稍后 使用的选项。这是一个问题 - 如果我在 app.use() 中定义选项,当我需要 socket.js 模块时,我将不再能够传递配置的会话(它是选项)。
我会喜欢做的事情是这样的:
const session = require('express-session')({
secret: `MyEpicSecret`,
resave: true,
saveUninitialized: true,
cookie: {maxAge: 1000 * 60}, // 1 minute: for testing
store: new MongoStore(options)
});
const MongoStore = require('connect-mongo')(session);
app.use(session);
这是不可能的 - MongoStore 在我尝试使用它时没有定义。如果我将 MongoStore 向上移动,当我需要 MongoStore 时,session 将是未定义的。
我仍在学习 express 的技巧,非常感谢任何人能够提供的帮助 :)
【问题讨论】:
标签: javascript node.js mongodb express session