Socket.io认证情况

时间:2015-06-22 23:26:03

标签: javascript sockets cookies express socket.io

我在Express 4中使用Socket.io。

Socket.io有一些中间件,允许您在注册连接事件之前验证套接字请求。

我遇到的问题是socket.request.cookies没有定义。因此,我注册的错误是“没有cookie传输”,如下所示。

这个新的中间件看起来像这样:

       io.use(function (socket, next) {
                var handshakeData = socket.request;
                //var handshakeData = socket.handshake || socket.request;

                if (handshakeData.headers.cookie && handshakeData.cookie) {

                    handshakeData.cookie = cookie.parse(handshakeData.headers.cookie);

                    handshakeData.sessionID = cookie.parse(handshakeData.cookie['express.sid'], 'foo'); //pass session secret at end

                    if (handshakeData.cookie['express.sid'] == handshakeData.sessionID) {
                        return next(new Error('Cookie is invalid.'), false);
                    }

                } else {
                    return next(new Error('No cookie transmitted.'), false); //I am failing here
                }

                return next(null, true);

            });
像我说的那样,问题是handshakeData.cookie = socket.handshake.cookie是未定义的。我认为需要定义此值才能使身份验证正常工作。知道什么可能是错的吗?

0 个答案:

没有答案