l'authentification de l'utilisateur à l'aide d'une douille.io
Je l'ai en rouge ce tutoriel: http://howtonode.org/socket-io-auth.
Il montre comment authentifier les utilisateurs à l'aide de l'express et de la prise.io.
Mais est-il un moyen pour authentifier les utilisateurs à l'aide de seulement socket.io sans le besoin de s'exprimer?
edit:
Pour le gestionnaire de session j'utilise RedisStore (https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO).
Ce qui est à gauche est un module pour créer des cookies d'authentification.
Personne ne sait d'une prise de courant.io la mise en œuvre je peux utiliser pour créer un cookie d'authentification comme vous pouvez le faire avec le gestionnaire de session?
- Êtes-vous à l'aide de Socket.IO autonome? L'authentificateur ne crée pas les cookies, il transmet simplement à Douille.IO.
- pour le moment je suis en utilisant exprimer avec la prise.io. Express crée seulement l'authentification par cookie. Je ne l'utilise pas du routage, middleware, .... Session entre express et de la prise.io est partagée avec connectez-redis. Je pense que c'est une trop grande dépendance à utiliser uniquement pour la connexion des cookies. Donc, je suis à la recherche d'une solution qui ne dépend pas de l'express (se connecter). J'ai pu mettre en œuvre mes propres non testés et l'insécurité de l'auth procédure mais comme Golo Roden a suggéré qu'il n'est pas conseillé.
- Donc, en d'autres termes, vous voulez une application qui s'exécute sur la base du serveur HTTP? Parce que si vous ne voulez pas utiliser un serveur HTTP totalement, alors vous pouvez utiliser les cookies?
- Oui. Juste besoin d'un nœud module qui permet de gérer signé auth cookies. Je sais comment implémenter un simple serveur HTTP à l'aide d'un noeud. Mais ne sais pas du tout testé nœud module qui permet de créer signé des cookies. Je veux juste utiliser le serveur HTTP pour la première req/res cycle. Je suis en utilisant des cookies, parce que vous pouvez les protéger contre les attaques de type XSS et de les rendre HTTPS uniquement.
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est un peu vieux, mais pour les futurs lecteurs en plus à l'approche de l'analyse de cookie et de la récupération de la session du stockage (par exemple. le passeport.socketio ) vous pouvez également envisager un jeton approche fondée sur les.
Dans cet exemple, j'utilise JSON Web Jetons qui sont assez standard. Vous avez à donner à la page client le jeton, dans cet exemple, imaginez une authentification point de terminaison qui retourne JWT:
Maintenant, votre support.io server peut être configuré comme suit:
La prise.io-jwt middleware attend le jeton dans une chaîne de requête, donc, de la part du client, vous n'avez qu'à joindre lors de la connexion:
J'ai écrit une explication plus détaillée de cette méthode et les cookies ici.
Au lieu ou le câblage de l'authentification et de session de la manipulation de code manuellement, je vous recommande d'aller avec un module dédié, comme session.socket.io (mais s'il vous plaît noter que ceci est un module qui nécessite Exprimer ainsi).
Je suppose (mais ne le savent pas) qu'il y avait downvotes parce que vous besoin d'une sorte de gestion de sessions, et vous avez très probablement ne voulez pas faire cela à la main ;-). Donc c'est une très bonne idée de coller avec l'Exprimer ici.
Néanmoins, c'est une question intéressante, bien que je ne peux pas répondre sur la façon de le faire sans l'accord Express.
Je suis tout à fait nouveau pour node.js, tout a commencé il y a quelques jours. et je ne peux répondre à la première partie de la question, qui est d'authentification de l'utilisateur sans l'utilisation de l'express. et j'ai aussi eu pas de session de style de manutention encore.
la raison pour laquelle je suis encore à répondre à cette question consiste à aider d'autres gens qui sont nouveaux à nœud avec une plus simple solution de rechange pour le début.
la solution que j'utilise actuellement dans mon projet d'apprentissage (un socket.io - fondé de chat, quoi d'autre?) est d'utiliser le serveur http pour l'authentification.
si vous ne pouvez pas obtenir une authentification valide sur le serveur http, vous n'aurez jamais accès à la page avec le socket.io interface.
l'authentification de l'utilisateur sur le serveur http est gérée par la lecture de certains POST de données. seulement si le POSTE de validité des données les données de l'utilisateur l'utilisateur est autorisé à se déplacer sur le chat où le socket.io interface.