Express 4 - 如何解析签名的cookie?

时间:2014-11-07 21:58:36

标签: node.js express socket.io authorization

我正在使用Socket.IO和Express 4进行授权。由于Express.JS不再依赖于Connect中间件,我在使用新的cookie-parser模块解析已签名的cookie字符串时遇到问题。假设我需要通过cookie在RedisStore中进行检查会话。这是我从Socket.IO握手数据中得到的:

{ host: 'localhost:8081',
  accept: '*/*',
  connection: 'keep-alive',
  cookie: 'io=CyMFrlbrFD23UeVbAAAA; connect.sid=s%3ADHWS7fJ8e5mQ35yvrKwUBQXH7oAIoEIz.R0TLqQ93IwotvIxNqdU17IgPDKOBMXnlM9eTZ8e4gFU',
  ...
}

如何使用sessionSecret解析cookie参数我必须在Redis商店中搜索合适的会话?

以前我用过

sessionID = globals.connect.utils.parseSignedCookie(handshakeData.cookie["connect.sid"], SESSON_SECRET)

并使用

键在Redis中搜索
client.get "sess:" + String(sessionID), (err, reply) ->
  ... # we found session object with username, success!

现在我无法做到这一点。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

解决方案很简单:

cookieParser = require("cookie-parser")
handshakeData.sessionID = cookieParser.signedCookie( handshakeData.cookie["connect.sid"], globals.config.express.sessionSecret )