我的视图依赖于一些数据来渲染,如下所示:
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('/');
});
它仍然不起作用。数据仍未定义。
解决此问题的最佳做法是什么?
答案 0 :(得分:0)
我的猜测是:您的layout_data
未定义。