0

節點服務器,我有以下的驗證功能的使用快車會話,連接 - 蒙戈和PassportJS的組合:如何在響應之前訪問Express(js)-session cookie serverside?

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) 
    } 
); 

正如你可以在評論部分看,我想之前訪問的cookie信息響應被髮送到客戶端。我在'res'和'user'對象中找不到任何這樣的數據。

特別是我正在尋找可以在HTTP響應中的'SET-COOKIE'標頭中找到的相同字符串。

回答

0

中的Set-Cookie頭的字符串後從調用即res.redirect(..)你的個人代碼中快速會話\創建index.js

找到函數'setcookie',您將能夠訪問原始字符串(並且如果您願意,可以篡改它的創建)。 目前這意味着自定義內部快速會話代碼是不理想的。

編輯: 我已經收到了二級建議從道格拉斯威爾遜,貢獻者/開發人員快速會話:

快遞會話模塊不提供任何實際接口檢查將其設置之前在Node.js HTTP響應對象上,但是您可以在發送響應之前找到它,根據您的使用情況,您可以使用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.* 
相關問題