REST-API Endpunkt zum Ändern der E-Mail mit mehrstufiger Prozedur und Ändern des Kennworts

9

Ich brauche Hilfe beim Erstellen der REST-Endpunkte. Es gibt einige Aktivitäten:

Um die E-Mail zu ändern, sind 3 URL-Anfragen erforderlich:

  1. / changeemail: Hier wird das Einmalpasswort (OTP) an das Mobiltelefon des Benutzers gesendet

  2. / Benutzer / E-Mail: Der Benutzer sendet das Einmalpasswort aus dem vorherigen Schritt und das System sendet die E-Mail an den neuen Benutzer, um auf den E-Mail-Aktivierungslink

  3. zu klicken
  4. / activateemail: Der Benutzer klickt auf den Link im neuen E-Mail-Posteingang und der Server aktualisiert die neue E-Mail

Um das Passwort zu ändern:

  1. / users / password (PATCH): Benutzer gibt altes Passwort und neues Passwort ein und das System aktualisiert entsprechend das neue Passwort

Ebenso gibt es andere Endpunkte, um das Profil zu ändern (das Feld enthält Bday, Vornamen und Nachnamen)

nachdem ich online gelesen habe glaube ich mein System als nur users als Ressource - & gt; Um die Attribute zu aktualisieren, dachte ich daran, einen einzigen PATCH für die Änderungs-E-Mail zu verwenden und das Passwort zu ändern, und so etwas wie das Operationsfeld, so dass die beiden oben genannten Funktionen wie folgt aussehen:

Zum Ändern der E-Mail-Adresse:

  1. Operation: 'sendOTPForEmailChange'
  2. Operation: 'sendEmailActivationLink'
  3. Operation: 'activateEmail'

Zum Ändern des Passworts:

  1. Vorgang: 'changePassword'

und ich werde nur einen Endpunkt für alle oben genannten Operationen haben, der (in nodejs) ist:

%Vor%

Klingt das eine gute Idee? Wenn nicht, kann mir jemand helfen, die Endpunkte für changeemail und changepassword zu bilden.

Antwort :

Ich entschied mich schließlich für die Verwendung von PATCH mit dem Operationsfeld im HTTP-Anfragetext, um anzugeben, welche Operation ausgeführt werden muss. Da ich nur ein einzelnes Feld der Ressource änderte, benutzte ich die PATCH-Methode. Außerdem wollte ich vermeiden, Verben in der URI zu verwenden, so dass das Feld 'operation' besser aussah.

Einige Referenzen, die ich bei dieser Entscheidung verwendet habe:

Wilts Antwort Link hier

Mark Nottingham 'Blog Link Artikel

und schließlich JSON MERGE PATCH Link-RFC

    
j10 17.07.2017, 09:48
quelle

3 Antworten

4

Sie sollten die Links erstellen, die die bestimmte Ressource definieren, die Verwendung von PATCH vermeiden und die gesamte Logik in einem Link hinzufügen, um die Dinge einfach zu halten und die Trennung von Problemen in der API zu verwenden wie das

%Vor%     
Ghulam Mohayudin 27.07.2017 13:03
quelle
2

Hashing Security ist ein Muss, IMHO, sollten Sie jemals Ihr eigenes Benutzerkontensystem implementieren wollen.
Zwei-Faktor-Identifikation sollte immer berücksichtigt werden, zumindest als Opt-In-Funktion. Wie würden Sie es in Ihr Login-Schema integrieren?
Was ist mit Identity Federation? Kann Ihr Nutzer seine sozialen Konten nutzen, um Ihre App zu nutzen?

Ein kurzer Blick auf Google ergab dies und dies , sowie dieses .

Wenn Sie nicht selbst einen guten Grund haben, dies selbst zu tun, würde ich viel Zeit in die Integration einer Lösung investieren, die von einer starken Community für die Nutzenaspekte des Projekts unterstützt wird, und mich darauf konzentrieren, den Geschäftswert für Ihre Kunden zu implementieren.

NB: Mein Text war zu lang für die Kommentare

    
Sumi Straessle 23.07.2017 10:37
quelle
1

Meistens stimme ich mit Ghulams Antwort überein, die Trennung der Bedenken ist der Schlüssel. Ich schlage leicht verschiedene Endpunkte vor, wie folgt:

%Vor%     
Deven Shah 27.07.2017 13:53
quelle

Tags und Links