Frage

Ich verwende WAMP.WS -Spezifikationen, um öffentliche/private Benutzer -Chatrooms auf meiner Website zu entwerfen.

Mein Problem kommt, wenn ich versuche, eine Liste aller verbundenen Benutzer zu behalten. Was ich tun konnte:

  1. Alle Benutzer abonnieren das Thema "/Kontakte/Verbindungen".
  2. Wenn ein Benutzer eine Verbindung herstellt, veröffentlicht er eine "Hallo" -Meldung mit einem Argument "user_id" und teilt anderen Benutzern mit, dass er verbunden ist.

-> Aber wie kann ich den Nutzern vertrauen? Jeder Benutzer kann eine "Hallo" -Meldung mit einem zufälligen "user_id" -Argument senden.

Für mich muss der Server einige Überprüfungen durchführen, bevor sie die Nachricht übertragen. Aber stimmt es den Spezifikationen von WAMP.js? Ich habe gelesen, dass eine veröffentlichte Nachricht immer vom Server ausgestrahlt wird.

Eine andere Lösung könnte darin bestehen, einen RPC -Anruf zu verwenden, um einen Benutzer zu verbinden. Eigentlich habe ich das für die Authentifizierung von Benutzern getan. Aber kann der Server ein Ereignis an das Thema "/Kontakte/Verbindungen" selbst übertragen? (Nach einem RPC -Anruf, nicht nach "veröffentlichen" Nachricht) Ich habe gelesen, dass das Ereignis nur das direkte Ergebnis einer "Veröffentlichung" vom Kunden ist. Darüber hinaus würde dies nicht verhindern, dass reguläre Benutzer das Thema "/Kontakte/Verbindungen" Ereignisse senden, das vom Server ausgestrahlt wird.

Ich bin der Meinung, dass meine beiden Lösungen (Überprüfung veröffentlichter Nachrichten vor dem Ausstrahlung oder Ausstrahlung eines Ereignisses nach Server nach einem RPC -Anruf) beide Spezifikationen von WAMP.JS brechen. Liege ich falsch ?

Vielen Dank

War es hilfreich?

Lösung

Wamp unterscheidet sich zwischen

  1. Authentifizierung
  2. Genehmigung
  3. Validierung

Authentifizierung Legt die Identität eines Wamp -Kunden in einem Wamp -Router fest.

Beim Benutzen Autobahn | Python Um Ihren eigenen Wamp -Router zu rollen, hier sind mehrere Beispiele, die zeigen, wie verschiedene Authentifizierungsmechanismen implementiert werden.

Beim Benutzen Crossbar.io (Ein integrierter Produktionsbereitschafts -Wamp -Router), Authentifizierungsmechanismen sind eingebaut (hier).


Genehmigung Bestimmt, ob ein bestimmter WAMP -Client eine WAMP -Aktion (wie Veröffentlichung oder Anruf) auf einem bestimmten URI ausführen darf.

Beim Benutzen Autobahn | Python Um Ihren eigenen Wamp -Router zu rollen, hier ist ein Beispiel, das zeigt, wie die benutzerdefinierte Autorisierung implementiert wird.

Crossbar.io verfügt über ein integriertes statisches Autorisierungsschema und ermöglicht es, benutzerdefinierte WAMP -Verfahren zur Autorisierung zu registrieren (hier).


Schließlich gibt es Validierung, die die Nutzlast von Ereignissen oder Anrufen der Anwendungsniveau überprüft.

Hier ist ein Beispiel für Autobahn | Python. Crossbar.io ermöglicht es bald, benutzerdefinierte WAMP -Verfahren zur Validierung zu registrieren.


Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top