我正在尝试从socket.io中解析已签名的cookie以进行授权。我已经设置了一个简单的方法,确保在我的快递和放大器中使用相同的cookie秘密。 socket.io配置。但是,在解析cookie时,我只看到“io”cookie被解析而不是“sid”cookie(来自express的那个)。
var config = require('config');
var cookieParser = require('cookie-parser');
var ioCookieParser = function () {
var parser = cookieParser.apply(null, arguments);
return function (socket, next) {
console.log('Parsing cookies:', socket.request.headers.cookie);
parser(socket.request, null, function () {
console.log('Parsed cookies:', socket.request.cookies);
console.log('Parsed signed cookies:', socket.request.signedCookies);
next();
});
}
};
io.use(ioCookieParser(config.server.cookieSecret));
在查看console.log
行的输出时,我看到:
Parsing cookies: io=F2sP36OJqG35eon3AAAA; sid=s%3AoiVZO8uT6XEqZ7I149JMa0Vt0ebh_RMV.85jPEnUODVqcW100BuZankaJyqLLoEJ06goRgj6QK5I
Parsed cookies: { io: 'F2sP36OJqG35eon3AAAA' }
Parsed signed cookies: { sid: false }
您可以在第一个输出行中清楚地看到Cookie中定义了sid
。但是,它没有被解析出来,因为在第二个输出行中可以看到。我做错了什么?
编辑:我没有意识到已签名的Cookie位于单独的request.signedCookies
对象中,但我现在看到它正在设置{ sid: false }
而不是值。
答案 0 :(得分:1)
我明白了。由于在阅读快速文档时存在误解,我的配置包括单独的cookieSecret
和sessionSecret
,而我应该只使用一个共享值。