不推荐使用connect.utils.parseSignedCookies,使用Express和Redis的cookie存储

我正在阅读使用Redis和Node.js构build可伸缩应用程序,整个代码不起作用或不推荐使用。 我试图使用提供给我的代码使用cookie存储:

var io = require('socket.io'), connect = require('connect'), cookie = require('cookie'), expressSession = require('express-session'), ConnectRedis = require('connect-redis')(expressSession), redis = require('redis'), config = require('../config'), redisAdapter = require('socket.io-redis'), redisSession = new ConnectRedis({host: config.redisHost, port: config.redisPort}); var socketAuth = function socketAuth(socket, next){ var handshakeData = socket.request; var parsedCookie = cookie.parse(handshakeData.headers.cookie); console.log(parsedCookie); var sid = connect.utils.parseSignedCookies(parsedCookie['connect.sid'], config.secret); if (parsedCookie['connect.sid'] === sid) return next(new Error('Not Authenticated')); redisSession.get(sid, function(err, session){ if (session.isAuthenticated) { socket.user = session.user; socket.sid = sid; return next(); } else return next(new Error('Not Authenticated')); }); }; 

当我运行该应用程序,我得到一个错误,说:

 Cannot call method 'parseSignedCookies' of undefined 

我95%确定问题从这里开始:

  var sid = connect.utils.parseSignedCookies(parsedCookie['connect.sid'], config.secret); 

我确信问题在于Connect不再被Express使用,但我还有什么办法可以parsingCookie? 我可能不得不完全重写代码并弄清楚,但如果有人有任何聪明的想法,请告诉我。

看来模块cookieparsing器做了窍门。 这是我添加的代码:

 var cookieParser = require('cookie-parser'); var sid = cookieParser.signedCookie(parsedCookie['connect.sid'], config.secret);