Wie füge ich externe Service-Logins zu einem bereits bestehenden Account in Meteor hinzu?

8

Nachdem ich eine Profilseite für meine App erstellt habe, möchte ich eine Liste der sozialen Dienste anzeigen, auf denen sich der Nutzer befindet. Es fiel mir auf, dass der einfachste Weg wäre, das eingebaute Kontensystem von Meteor dafür zu benutzen.

Gibt es eine gute Möglichkeit, einem vorhandenen Konto externe Dienste hinzuzufügen?

Kann sich der Benutzer dann auch mit (z. B.) Facebook und seinem Passwort von meiner App aus anmelden?

Eine weitere Frage, die natürlich folgt: Gibt es eine gute Möglichkeit, ein anwendungsspezifisches Passwort zu einem Konto hinzuzufügen, das mit einem externen Dienst erstellt wurde?

    
Swadq 23.03.2013, 22:43
quelle

4 Antworten

7

Hier ist eine alternative Methode. In dieser Lösung überschreibe ich eine Kernfunktion und füge ein benutzerdefiniertes Verhalten hinzu. Mein Ziel ist es, die Servicedaten mit dem aktuell angemeldeten Benutzer zu verknüpfen und dann der Kernfunktion zu erlauben, ihr Ding wie normal zu machen.

%Vor%

Pros:

  • Vermeidet die Erstellung unnötiger Konten
  • Code ist kurz und einfach zu verstehen
  • Code ist leicht zu entfernen, wenn diese Funktionalität zu Meteor core hinzugefügt wird

Nachteile:

  • Erfordert, dass der Benutzer angemeldet ist. Wenn sich ein Benutzer zunächst mit Twitter anmeldet, sich abmeldet und sich dann bei Facebook anmeldet, werden zwei separate Konten erstellt.
  • Benutzer, die sich einen Computer teilen, können ihre Konten unbeabsichtigt zusammenführen.
  • Verweist auf die Funktionsweise von updateOrCreateUserFromExternalService. Das ist nicht schrecklich - weil es Teil von Meteors öffentlichem Api ist, wird es sich wahrscheinlich nicht drastisch ändern (nicht oft sowieso). Aber es ist immer noch riskant.
jrullmann 02.09.2013 15:24
quelle
3

So füge ich Anmeldeinformationen zu einem bestehenden Benutzerkonto hinzu: ... / Meteor-how-to-Login-mit-GitHub-Account.html

    
Ondrej Kvasnovsky 21.07.2013 12:06
quelle
1

Ja, ein Benutzerkonto kann mehreren Diensten zugeordnet sein und gleichzeitig eine kennwortbasierte Anmeldung haben. In den Meteor-Dokumenten sehen Sie die Struktur eines solchen Benutzerkontos:

%Vor%

Um einen Benutzernamen / ein Passwort für ein bestehendes Konto hinzuzufügen, können Sie Accounts.sendResetPasswordEmail auf der Serverseite verwenden. Dies stellt auch sicher, dass die Änderung authentifiziert und autorisiert erfolgt.

Natürlich können Sie den Benutzerdatensatz auf der Serverseite auch selbst mit einem neuen Passwort aktualisieren, aber dies könnte zu einer Sicherheitslücke in Ihrer App führen. Ich würde auch davon abraten, wenn möglich ein eigenes Krypto-Protokoll zu implementieren, da es schwierig ist .

Wenn Sie andere Dienste als E-Mail hinzufügen möchten, könnten Sie zum Beispiel

  1. ruft eine Servermethode auf, die ein zufälliges, langes Token im MongoDB-Dokument des aktuellen Benutzers speichert und an den Client zurückgibt.
  2. Melden Sie sich erneut mit einem anderen Dienst an, indem Sie Accounts.loginWith[OtherService] verwenden. Dadurch wird der Benutzer mithilfe eines neuen Kontos beim anderen Dienst aus- und wieder angemeldet.
  3. ruft eine zweite Servermethode mit dem zurückgegebenen Token der ersten Methode als Parameter auf. Diese zweite Methode sucht nach dem Benutzerkonto mit dem angegebenen Token und führt dessen Daten in das aktuelle (neue) Konto zusammen.
opyh 24.03.2013 15:38
quelle
0

Schauen Sie sich das Beispiel an und antworten Sie in diesem Beitrag. Es gibt Ihnen ziemlich genau den Code, um mehrere externe und interne Konten zu integrieren. Mit kleineren Optimierungen können Sie die Passwortfelder für jedes Konto nach Belieben hinzufügen.

Wie Meteor zu verwenden. loginWithGoogle mit mrt: accounts-ui-bootstrap-dropdown

Code:

%Vor%     
FullStack 05.10.2014 12:34
quelle

Tags und Links