0

我正在使用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没有提到绑定prepost用于可用事件的方法。

感谢您的帮助!

4

0 回答 0