为什么不表达cookie解析器解析我的所有cookie数据?

时间:2014-08-31 15:58:28

标签: cookies express socket.io authorization session-cookies

我正在尝试从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 }而不是值。

1 个答案:

答案 0 :(得分:1)

我明白了。由于在阅读快速文档时存在误解,我的配置包括单独的cookieSecretsessionSecret,而我应该只使用一个共享值。