0

Используя комбинацию Экспресс-сессии, Connect-Монго и PassportJS на сервере Узел У меня есть следующие функции проверки:Как получить доступ к Express (js) -session cookie serveride перед ответом?

expressApp.post('/login', function(req, res, next) { 
    passport.authenticate('login', function(err, user, info) { 
       if(err) { 
        return console.log(err); 
       } 
       if(!user){ 
        res.set('WWW-Authenticate', 'x' + info); 
        return res.send(401); 
       } 
       req.login(user, function(err){ 
        if(err) { 
         return console.log(err); 
        } 
        //I WANT TO ACCESS OUTGOING COOKIE HERE 
        //var cookie = res.get('SET-COOKIE'); 

        res.redirect('/homepage'); 
       }); 
      } 
     )(req, res, next) 
    } 
); 

Как вы можете видеть в комментировал части, я хочу, чтобы получить доступ к информации печенья до того ответ отправляется клиенту. Я не смог найти такие данные в объекте «res» и «user».

В частности Я ищу ту же строку, которую вы можете найти в заголовке 'SET-COOKIE' в ответе HTTP.

ответ

0

Строка заголовка SET-COOKIE создана в Экспрессе-сессии \ index.jsпосле вызывающего res.redirect т.е. (..) от вашего персонального кода.

Найти функцию 'setcookie', и вы сможете получить доступ к необработанной строке (и по возможности прикоснуться к ее созданию, если хотите). В настоящее время это означает настройку внутреннего кода экспресс-сессии, который не является идеальным.

EDIT: я получил вторичное предложение от Дуглас Уилсон, вкладчик/разработчик для экспресс-сессии:

Модуль экспресс-сессия не дает какого-либо реального интерфейса изучить его, прежде чем он устанавливает его на объекте ответа HTTP Node.js, но вы можете добраться до него до отправки ответа, который может работать или не работать в зависимости от вашего прецедента, используя модуль on-headers, чтобы видеть, как заголовки отправляются клиенту:

var onHeaders = require('on-headers'); 

// ... later when you need to get to it 

onHeaders(res, function() { 
    // the final headers are visible here to read, remove, or alter 
    console.dir(res.get('Set-Cookie')); 
}); 

*Now, this may or may not be useful, depending on the reason you need that cookie.* 
Смежные вопросы