如何在res.redirect期间传递数据?

时间:2015-10-09 06:38:46

标签: node.js express

我的视图依赖于一些数据来渲染,如下所示:

router.get("/", (req, res) => {
    res.render(
        'index', {
            data: layout_data,
            user: req.user
        }
    );
});

router.post('/login', passport.authenticate('local'), function(req, res) {
    res.redirect('/');
});

有效。但是当我添加像

这样的 csurf 中间件时
router.post('/login', parseForm, csrfProtection, passport.authenticate('local'), function(req, res) {
    res.redirect('/');
});

布局引擎告诉我data未定义。我怀疑csurf中间件会删除数据。

我试着像这样修理它:

router.get("/", (req, res) => {
    req.mydata = {};
    req.mydata.layout_data = layout_data;
    res.render(
        'index', {
            data: req.mydata.layout_data,
            user: req.user
        }
    );
});

router.post('/login', parseForm, csrfProtection, passport.authenticate('local'), function(req, res) {
    if (!req.mydata) {
        req.mydata = {};
    }
    req.mydata.layout_data = layout_data;
    res.redirect('/');
});

它仍然不起作用。数据仍未定义。

解决此问题的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

我的猜测是:您的layout_data未定义。