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

Les*_*aul 4 cookies redis node.js express

我正在阅读使用Redis和Node.js构建可扩展应用程序,并且整个代码都不起作用或被弃用.我正在尝试使用提供给我的代码的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'));
  });
};
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我收到一条错误消息:

Cannot call method 'parseSignedCookies' of undefined
Run Code Online (Sandbox Code Playgroud)

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

  var sid = connect.utils.parseSignedCookies(parsedCookie['connect.sid'], config.secret);
Run Code Online (Sandbox Code Playgroud)

我确定问题在于Express不再使用Connect,但我有什么替代方法来解析cookie?我可能只需要完全重写代码并解决问题,但如果有人有任何聪明的想法,请告诉我.

Les*_*aul 9

似乎模块cookie解析器就可以了.这是我添加的代码:

var cookieParser = require('cookie-parser');

var sid = cookieParser.signedCookie(parsedCookie['connect.sid'], config.secret);
Run Code Online (Sandbox Code Playgroud)