2016-08-03 1 views
0

Ich implementiere eine Aktualisierungs-E-Mail-Funktion für eine App. Hier sind meine db TabellenBest Practices zum Implementieren der Aktualisierungsbenutzer-E-Mail

users: id, username, password, email, is_verified 
email_verification: id, user_id, new_email, token 

Prozess:

Benutzeranforderungen für E-Mail-Update durch Ausfüllen eines Formulars, die Gegenwart und die Zukunft von E-Mails enthält.

App generiert ein Token, beharrt es auf email_verification mit zugehörigen Daten. Dann sende E-Mails an Accounts. (Benachrichtigung, um E-Mail zu präsentieren, Verifizierung für zukünftige).

Wenn Benutzer, überprüft, App prüft auf Token-Validierung und andere Stoffe dann ersetzen Sie E-Mail in users. Abschließend wird die Benutzersitzung auf allen Geräten zur erneuten Authentifizierung protokolliert.

Meine Frage ist: Kann ich eine elegantere Lösung bekommen? (Ich benutze Laravel, wenn es hilft)

Antwort

0

eine gute Möglichkeit, dies zu tun wäre, die E-Mail zuerst an alte E-Mail zu senden überprüfen, dass der Benutzer E-Mail ändern und zeigen Sie, welche E-Mail ist die neue E-Mail dann, wenn sie klicken auf dem Link in E-Mail wird es ein Token speichern den Wert generieren und senden Sie eine andere E-Mail an die neue E-Mail-Adresse, wo sie auf den Link zum Aktualisieren der E-Mail-Adresse klicken Sie auf Ihre App sehen das Token und die alte E-Mail bestätigen, dass eine Übereinstimmung aktualisiert dann

Link für neue E-Mail: kodieren Link/Methode (Token)/(old_email)/(new_email) // Bestellung

in Ihrem Controller jedes Segment erhalten und sie Salz verwenden dekodieren, wenn

so benötigt, wenn die codierten Werte manipuliert werden, es wird funktionieren nicht

EDIT: wenn alle alle drei Segmente in Ihrem db überprüfen 3 match das update und dann entfernen Sie das Token oder setzen Sie das Token-Feld auf eine andere zufällige Ziffer gesetzt, so dass sie nach dem Update kann nicht klicken Sie den Link wieder

+0

Ich hätte gerne diese Methode verwendet, aber ich werde nicht für Benutzer arbeiten, die nicht länger haben Zugriff auf ihre E-Mails – orekelewa