2016-07-07 1 views
2

Скажем, у меня есть это:ExpressJS> маршрутизатор промежуточного> передавая переменную req.foo через редирект не работает

а) 2 маршрута с 1 функцией промежуточного слоя каждой и функции обратного вызова:

router.post('/foo', fooCtrl, function(req, res) 
{ 
    res.redirect('/bar'); 
}); 

router.get('/bar', barCtrl, function(req, res) 
{ 
    res.end('finished'); 
}); 

б) 2 функция промежуточного выражения

fooCtrl = function(req, res, next) 
{ 
    req.foo = 'foo'; 

    next(); 
}; 

barCtrl = function(req, res, next) 
{ 
    console.log(req.foo); // output is 'undefined' 

    next(); 
}; 

Как вы можете видеть, в fooCtrl я устанавливаю переменную req.foo - и в этой области он установлен, чем ... но я не могу назвать эту переменную в barCtrl-scop е.

Не является ли объект req пройденным ссылкой?

Любые предложения или рекомендации?

Цель этого - передать токен после входа с логина-контроллера в контроллер-администратор .. что-то вроде этого.

ответ

2

Это ожидаемое поведение. Объект req создается заново для каждого нового запроса и вашего перенаправления, т. Е. res.redirect('/bar') приводит к новому запросу.

Вы можете использовать некоторый пакет, например. connect-flash, который хранит переменные во временном объекте сеанса, который может использоваться только один раз. Перед перенаправлением необходимо установить требуемые значения в ваших объектах Flash. Затем после перенаправления вы сможете получить сохраненные значения из самого объекта вспышки.

+0

ok thx. это был ожидаемый ответ: -D-я думал, что это должно быть так, но не смог найти подтверждения. thx для вашего объяснения. /// это здорово, я уже использую connect-flash - не был уверен, что это хорошая практика, чтобы использовать его для sth, как это (none-messages). так снова, big thx :-) – sasha

+0

@sasha Спасибо :) –

 Смежные вопросы

  • Нет связанных вопросов^_^