Express4和Passport中的连接闪存



我有一个非常简单的节点网站,我试图使用连接flash。我根本无法让flash数据工作

在我的应用程序中,我使用这个配置

app.use(cookieParser(config.secret));
app.use(session({ secret: config.secret, name: 'sid', cookie: { secure: true }}));
app.use(flash());

和我的login post route

app.post('/login',
    passport.authenticate('local', { 
        successRedirect: '/',
        failureRedirect: '/login',
        failureFlash: true,
        failureFlash: 'Invalid username or password.'
    });
);

和我的login get route.

app.get('/login', function (req, res) {
    res.locals.errors = req.flash();
    console.log(res.locals.errors);
    res.render('login', { 
        errors: res.locals.errors
    });
});

应用程序本身工作正常,并且在成功的身份验证上设置会话。但是flash数据从来没有设置过,总是一个空对象。我甚至尝试过使用一条路由来设置flash数据和重定向,而重定向路由只是为了控制台记录flash消息。但这也是同样的事情。

我需要使用会话存储(mongo或redis)还是应该与内置的内存会话一起工作?

对我来说,这实际上不像是中间件问题。您确定在您试图检索flash消息之前已经存储了它们吗?

试着做req.flash('info', 'Flash is back!')然后通过console.log(req.flash('info'))写出来

中间件的排序是问题所在。

最新更新