【问题标题】:Why isn't express cookie-parser parsing all my cookie data?为什么 express cookie-parser 不解析我的所有 cookie 数据?
【发布时间】:2014-10-24 23:14:47
【问题描述】:

我正在尝试从 socket.io 中解析签名的 cookie 以进行授权。我已经设置了一个简单的方法来执行此操作,确保在我的 express 和 socket.io 配置中使用相同的 cookie 密码。但是,在解析 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 }

您可以在第一行输出中清楚地看到sid 是在cookie 中定义的。但是,它没有被解析出来,如第二个输出行所示。我做错了什么?

编辑:我没有意识到签名的 cookie 位于单独的 request.signedCookies 对象中,但我现在看到它设置的是 { sid: false } 而不是值。

【问题讨论】:

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


    【解决方案1】:

    我想通了。由于在阅读 express 文档时出现误解,我的配置包含一个单独的 cookieSecretsessionSecret,而我应该只使用一个共享值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      相关资源
      最近更新 更多