我正在使用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!
现在我无法做到这一点。
有什么想法吗?谢谢!
答案 0 :(得分:3)
解决方案很简单:
cookieParser = require("cookie-parser")
handshakeData.sessionID = cookieParser.signedCookie( handshakeData.cookie["connect.sid"], globals.config.express.sessionSecret )