Node.js 如何在res.重定向期间传递数据?
我的视图依赖于某些数据进行渲染,如下所示:Node.js 如何在res.重定向期间传递数据?,node.js,express,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) {
router.get("/", (req, res) => {
res.render(
'index', {
data: layout_data,
user: req.user
}
);
});
router.post('/login', passport.authenticate('local'), function(req, res) {
res.redirect('/');
});
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('/');
});
它起作用了。但是当我添加csurf中间件时
router.post('/login', parseForm, csrfProtection, passport.authenticate('local'), function(req, res) {
res.redirect('/');
});
布局引擎告诉我,数据
未定义。我怀疑csurf中间件会擦除数据
我试着这样修复它:
router.get("/", (req, res) => {
res.render(
'index', {
data: layout_data,
user: req.user
}
);
});
router.post('/login', passport.authenticate('local'), function(req, res) {
res.redirect('/');
});
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('/');
});
它仍然不起作用。数据仍然没有定义
解决此问题的最佳做法是什么?我的猜测是:您的
布局\u数据未定义。重定向URL时,它将变成GET请求。在GET请求中,您需要使用URL查询。@parats,但当我从中间件中删除csrfProtection
时,它会起作用。