最近在学 nodejs,在实现 评论验证码时遇到了一个问题。
代码:
app.use(session({
// name: identityKey,
secret: 'xiao-gan-de-session-ce-shi', // 用来对 session id 相关的 cookie 进行签名
store: new MongoStore({ mongooseConnection: mongoose.connection }), // 本地存储 session (文本文件,也可以选择其他 store,比如 redis 的)
saveUninitialized: false, // 是否自动保存未初始化的会话,建议 false
resave: false, // 是否每次请求都重新生成 session
// unset:null,
cookie: {
maxAge: 10 * 3000, // 有效期,单位是毫秒
}
}));
app.use(function timeLog(req, res, next) {
console.log('Time: ', Date.now())
// req.session.captcha = captcha.text;
next()
})
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(bodyParser.raw())
app.use('/api/captcha', captcha)
app.use('/api/comment', comment)
app.use('/api/base', base)
问题:
- 初始化时 mongodb 内可以看到 4 个 session 数据,我期望的是 1 条公用的 session 数据,是不是我理解有问题。
- 当我在 app.use('/api/captcha', captcha) 内获取到随机验证码 并像这样赋值 req.session.captcha = 4444 时,app.use('/api/comment', comment) 内因为和 captcha 内 不是一个 session,所以拿不到 captcha 这个字段。
请问我应该怎么解决呢?