如何使用Node.js我一直在“玩”与认证,表达和socket.io什么是授权使用Node.js和受Socket.io
我已经试过这里的例子http://howtonode.org/socket-io-auth
最好的方法app.use(express.cookieParser("rocks"));
app.use(express.session());
io.set('authorization', function(handshakeData, accept) {
console.log('in authorization');
if(handshakeData.headers.cookie) {
handshakeData.cookie = cookie.parse(handshakeData.headers.cookie);
handshakeData.sessionID = connect.utils.parseSignedCookie(handshakeData.cookie['express.sid']);
if (handshakeData.cookie['express.sid'] == handshakeData.sessionID) {
return accept('Cookie is invalid.', false);
}
} else {
return accept('No cookie transmitted.', false);
}
accept(null, true);
});
我不断收到的连接,更具体该调用线产生的错误
connect.utils.parseSignedCookie(handshakeData.cookie['express.sid']);
/workspace/node_modules/connect/node_modules/cookie-signature/index.js:39
if ('string' != typeof secret) throw new TypeError('secret required');
^
TypeError: secret required
我试图找到express.cookieParser API文档(我甲肝e)和express.session(我没有),并查看有问题的源代码。我想像我设置项目的方式有些事情,因为connect似乎有一个cookieParser以及express,或者express是使用来自connect的cookieParser。
我的package.json看起来像
{
"name": "mplayer",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"socket.io":"0.9.16",
"express": "3.4.0",
"jade": "*",
"stylus": "*",
"cookie": "*"
}
}
可有人请阐明为什么我收到此错误的光,其次可以他人分享如何使用Node.js的验证用户的最有效的方式,插座.io和express(我知道那里有各种各样的文章,但事情似乎已经开始了,很难跟踪当前的情况)。
更新的答案,它实际上是一个不同的原因。 – hexacyanide
我应该阅读API文档...谢谢! – avrono
如果没有发送cookie,客户端应该设置cookie并重试? – avrono