我正在使用express-session
并且connect-mongo
我有一个工作会话存储,如下所示:
import session from 'express-session'
import MongoStore from 'connect-mongo'
app.use(session({
secret: 'configs.secret',
resave: true,
saveUninitialized: true,
rolling: true,
store: MongoStore.create({
client: mongoose.connection.getClient()
}),
cookie: { /* ..configs.. */ }
}))
会议一切都很好。但是,对于每个新会话,我正在创建另一个集合的新文档并将其与会话链接。
假设我正在创建一个测验,然后将其 ID 添加到req.session.quiz
. 并将测验设置status
为'started'
。测验对象内的可用状态是:['started'', 'completed', 'expired']
。所以,我想要实现的是:当用户离开浏览器+10分钟时,我想删除他的会话并立即将测验状态设置为'expired'
.
我有一个关于 cookie 如何以及何时过期的工作版本,如下所示,并且商店会自动删除过期的会话:
app.use(session({
// ..same configs above..
cookie: {
httpOnly: true,
secure: !devMode(),
sameSite: true,
maxAge: ms('1m')
}
}))
但是,我不知道是否可以实现或绑定一个函数,所以我可以按照上面的说明更新测验状态。提供的可用事件connect-mongo
仅限于这些。并且也express-session
没有提到绑定pre
或post
用于可用事件的方法。
感谢您的帮助!