Je suis « jouer » avec l'authentification en utilisant Node.js, exprimer et Socket.IOQuelle est la meilleure approche pour l'autorisation avec Node.js et Socket.io
J'ai essayé l'exemple ici 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);
});
Je continue à obtenir une erreur générée par connexion, plus précisément cette ligne d'appel
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
J'ai essayé de trouver la documentation api pour express.cookieParser (que je VHA e) et express.session (que je n'ai pas) et regardé le code source incriminé. J'imagine qu'il y a quelque chose qui se passe dans la façon dont j'ai configuré le projet car connect semble avoir un cookieParser aussi bien qu'express, ou exprès utilise le cookieParser de connect.
Mon package.json ressemble
{
"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": "*"
}
}
Quelqu'un peut-il s'il vous plaît faire la lumière sur la raison pour laquelle je reçois cette erreur et d'autre part peut quelqu'un partager la façon la plus efficace d'authentification d'un utilisateur à l'aide Node.js, prise .io et express (Je sais qu'il existe plusieurs articles, mais les choses semblent s'être déplacées, il est difficile de savoir ce qui est courant).
Mise à jour de réponse, il est en fait une autre raison. – hexacyanide
J'aurais dû lire les documents API pour ça ... merci! – avrono
Si aucun cookie n'a été transmis, le client doit-il définir un cookie et réessayer? – avrono