如何使用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