Frage

Wir haben eine Social-Networking-Website, wo die Menschen haben Kontakte, und wir wollen es mit XMPP integriert werden. Wir haben im Moment ejabberd XMPP-Server verwenden.

Hier sind meine Fragen:

  1. Wie man richtig Konto erstellen? Gerade jetzt, was ich denke, ist auf die Benutzerregistrierung auf unserer Web-App, würden wir ein Skript aufrufen, die ein ejabberd Befehl ausführen würde es einem Benutzer zu erstellen.

  2. Die Benutzerauthentifizierung. Nach User-Login auf unserer Website, würde der Benutzer automatisch in auf dem Chat-System angemeldet sein. Wie tun Sie dies auf der Client-Seite mit strophe.js? Wie ich verstehe, müssen Sie JID und das Passwort für die Authentifizierung, so dass ich denke, auf Login, gäbe es einen Ajax-Aufruf seine Benutzer-Passwort zu erhalten, dann Login Anruf den Antworttext auf strophe.js verwenden. Ist das sicher? Gibt es andere Möglichkeiten, dies zu tun?

  3. Presence Registrierung. Unsere Web-Anwendung hat ein Kontaktsystem, sondern XMPP hat seine eigene Art und Weise das Hinzufügen von Kontakten durch Präsenz Abonnement, nicht wahr? Beispiel: Wenn Benutzer1 versucht hinzuzufügen user2, wäre eine Genehmigung zu user2 gefragt, bevor user1 ein Kontakt von user2 sein kann. Aber da wir bereits ein Kontaktsystem auf unserer Web-App haben, möchten wir Bypass dieser Ermächtigung von XMPP oder sie unterdrücken und nur mit einem Script / Befehl genehmigen, wenn benutzer2 bestätigt als Kontakt user1 auf unserer Website . Es ist mir noch nicht klar, aber ein Kollege sagte, dies ist auf ejabberd Modul mod_admin_extra möglich ist (ein Befehl, der ein Abonnement, ohne dass clientseitige Genehmigung schaffen). Ist es möglich, oder muss ich die ejabberd Datenbank manipulieren manuell mit einem Skript (sofern ich von der Standard-Mnesia db auf einen anderen db übertragen, sagen MySQL).

Vielen Dank im Voraus.

War es hilfreich?

Lösung 2

In Ordnung, hier ist das, was wir haben:

1) Anstelle von benutzerdefinierten Authentifizierung / externe Authentifizierung, erstellen wir Benutzerkonten auf XMPP nach Benutzer registriert.

2) Die Antwort auf diese ist Sitzung Anlage als Julien hingewiesen. Wir haben ein PHP-Skript, das die Sitzung und gibt die Session-ID und RID schaffen würde. Genannt durch AJAX auf anmelden Benutzer (nachdem das Dokument fertig ist).

3) Da ich auf einem Kommentar zu Juliens Post sagte, haben wir mod_admin_extra. Wir gekoppelt mit mod_rest (w / c können Sie Strophen senden / run REST-Stil-Befehle), um die Dienstpläne zu erstellen. Es ist ein * * add_rosteritem Befehl auf mod_admin_extra, dass jedes Mal Benutzer erstellen Kontakte auf unserer Website aufgerufen wird.

Andere Tipps

Wir ( superfeedr ) haben einen ähnlichen Web-App, wo XMPP Teil der Anwendung ist.

Die Wahl, die wir gemacht ist nicht die Benutzerdaten sowohl die Storage-Web-App accross zu replizieren und die XMPP-Server. Sie können Ihren eigenen Authentifizierungsmechanismus mit dem Web-App-Datenspeichern mit ejabberd bauen, es ist ziemlich einfach. Auf diese Weise haben Sie nur 1 einzigen Ort, wo Benutzerdaten gespeichert und müssen nicht ejabberd Benutzer erstellen.

Auf diese Weise können Sie auch Ihre Benutzer auf dem Web-App anmelden, ohne ihr Passwort zu kennen oder sogar in klar :) speichern. Der einfachste Weg ist die Session-Authentifizierung (über Bosh) auf dem Server und gibt die Session-ID in der HTML-Antwort zu tun, wie hier beschriebenen , durch @metajack.

Der dritte Teil könnte die heikelste sein, aber ich bin eigentlich ziemlich sicher, dass Sie Bypass dies können und nicht die integrierten „Dienstpläne“ verwenden ... aber es kann Ihre ganz eigene Komponente (intern oder extern) einbeziehen zu schaffen.

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