我有一个非常简单的节点网站,我正在尝试使用connect-flash。我无法让flash数据全部工作
在我的应用中,我将其用于配置
app.use(cookieParser(config.secret));
app.use(session({ secret: config.secret, name: 'sid', cookie: { secure: true }}));
app.use(flash());
和我的登录路线
app.post('/login',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/login',
failureFlash: true,
failureFlash: 'Invalid username or password.'
});
);
我的登录路线。
app.get('/login', function (req, res) {
res.locals.errors = req.flash();
console.log(res.locals.errors);
res.render('login', {
errors: res.locals.errors
});
});
应用程序本身运行良好,会话正在成功进行身份验证。但永远不会设置闪存数据,总是一个空对象。我甚至尝试过使用一条路由来设置闪存数据和重定向,重定向路由只是为了控制台记录flash消息。但这也是做同样的事情。
我是否需要使用会话存储(mongo或redis),还是应该使用内置内存会话?
答案 0 :(得分:0)
它实际上对我来说似乎不是一个中间件问题。您确定在尝试检索闪存消息之前是否存储了闪存消息?
尝试执行req.flash('info', 'Flash is back!')
之类的操作,然后通过console.log(req.flash('info'))
答案 1 :(得分:-3)
中间件的排序是个问题。