在节点服务器上使用Express-session,Connect-mongo和PassportJS的组合我有以下验证功能:
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 :(得分:0)
在从您的个人代码中调用res.redirect(..)之后,在 Express-session \ index.js 中创建SET-COOKIE标题字符串。
找到函数'setcookie',您将能够访问原始字符串(如果您愿意,可以篡改其创建)。 目前这意味着自定义内部快速会话代码并不理想。
修改强> 我收到了Express-session的撰稿人/开发人员Douglas Wilson的第二个建议:
快速会话模块在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.*