Benutzer-Authentifizierung mithilfe von socket.io
Habe ich rot dieses tutorial: http://howtonode.org/socket-io-auth.
Es zeigt, wie Benutzer authentifiziert werden mithilfe von express und socket.io.
Aber gibt es eine Möglichkeit um Benutzer zu authentifizieren, die nur mithilfe von socket.io, ohne die Notwendigkeit für express?
edit:
Für das session handling verwende ich RedisStore (https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO).
Was ist Links ist ein Modul zur Erstellung von Authentifizierungs-cookies.
Kennt jemand eine Buchse.io-Implementierung, die ich verwenden können, um einen Authentifizierungs-cookie, wie Sie tun können, mit session-handling?
- Sind Sie mit Sockel.IO als standalone? Der authenticator nicht schaffen cookies, übergibt Sie nur an Steckdose.IO.
- im moment bin ich mit express mit sockel.io. Express schafft nur das auth-cookie. Ich benutze es nicht routing -, middleware, .... Sitzung zwischen express und socket.io ist gemeinsam mit connect-redis. Ich denke, es ist eine viel zu große Abhängigkeit zum express nur für die Anmeldung cookies. Ich bin auf der Suche nach einer Lösung, die nicht davon abhängig, express (verbinden). Ich könnte die Umsetzung meiner eigenen ungeprüften und unsicheren auth-Verfahren, aber wie Golo Roden vorgeschlagen, es ist jedoch nicht ratsam.
- Also in anderen Worten, Sie möchten eine Implementierung, die ausgeführt wird auf die Basis-HTTP-server? Denn wenn Sie nicht wollen, verwenden Sie einen HTTP-server komplett aus, dann würden Sie wollen, um cookies zu verwenden?
- Ja. Brauchen nur ein node-Modul kann mit signierten auth cookies. Ich weiß, wie man implementieren Sie einen einfachen HTTP-server mithilfe von Knoten. Aber weiß nicht jeder getestet node-Modul erstellen kann, signierte cookies. Ich möchte nur zu verwenden, den HTTP-server für den ersten req/res-Zyklus. Ich verwende cookies, weil Sie Schutz vor XSS und machen Sie nur HTTPS.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, das ist bisschen alt, aber für zukünftige Leser zusätzlich zu dem Ansatz der Analyse cookie und abrufen der Sitzung aus dem Speicher (zB. Pass.socketio ) Sie könnten auch erwägen eine token-basierten Ansatz.
In diesem Beispiel verwende ich die JSON-Web-Tokens, die sind ziemlich standard. Sie haben zu geben, um die client-Seite die token, die in diesem Beispiel stellen Sie sich eine Authentifizierung, endpoint, gibt JWT:
Nun, Ihre Steckdose.io-server kann wie folgt konfiguriert werden:
Den sockel.io-jwt middleware erwartet, dass die token in einem query-string, also vom client müssen Sie nur hängen Sie es beim anschließen:
Schrieb ich eine ausführlichere Erklärung über diese Methode und cookies hier.
Statt oder Verdrahtung der Authentifizierung und session-handling-code manuell, würde ich empfehlen, Sie gehen mit einem speziellen Modul, wie Sitzung.socket.io (aber bitte beachten Sie, dass dies ist ein Modul, das erfordert Express).
Ich denke (aber weiß es nicht), dass es downvotes, weil Sie irgendeine Art von session-handling, und Sie die meisten wahrscheinlich nicht wollen, um dies manuell zu tun ist ;-). Daher ist es eine ziemlich gute Idee zu halten mit Express hier.
Dennoch, es ist eine interessante Frage, kann ich zwar nicht beantworten, wie es zu tun, ohne Express.
Ich bin ganz neu auf node.js nur vor ein paar Tagen begonnen. und ich kann nur Antworten auf den ersten Teil der Frage, die user-Authentifizierung ohne die Verwendung von express. und ich habe auch keine session-Stil das handling noch nicht.
der Grund, warum ich bin immer noch der Beantwortung dieser Frage helfen anderen Menschen, die neu sind Knoten mit einer einfachen alternative Lösung für den Anfang.
die Lösung, die ich bin derzeit mit meiner learning-Projekt (a-Buchse.io - chat, was sonst?) ist die Benutzung des http-Servers für die Authentifizierung.
wenn Sie nicht bekommen kann eine gültige Authentifizierung über den http-server, du wirst nie Zugriff auf die Seite mit der Steckdose.io-interface.
die Benutzer-Authentifizierung am http server erfolgt durch das Auslesen einige POST-Daten. nur wenn die POST-Daten werden gültige Daten der Benutzer berechtigt ist, sich auf den chat, wo die Steckdose.io-Schnittstelle ist.