Sie pflegen eine vorhandene Anwendung mit einer etablierten Benutzerbasis. Mit der Zeit wird entschieden, dass die aktuelle Kennwort-Hashing-Technik veraltet ist und aktualisiert werden muss. Außerdem möchten Sie aus UX-Gründen nicht, dass vorhandene Benutzer gezwungen werden, ihr Kennwort zu aktualisieren. Das gesamte Passwort-Hashing-Update muss hinter dem Bildschirm erfolgen.
Nehmen Sie für Benutzer ein 'vereinfachtes' Datenbankmodell an, das Folgendes enthält:
- ICH WÜRDE
- Passwort
Wie geht man vor, um eine solche Anforderung zu lösen?
Meine aktuellen Gedanken sind:
- Erstellen Sie eine neue Hash-Methode in der entsprechenden Klasse
- Aktualisieren Sie die Benutzertabelle in der Datenbank, um ein zusätzliches Kennwortfeld aufzunehmen
- Sobald sich ein Benutzer erfolgreich mit dem veralteten Kennwort-Hash anmeldet, füllen Sie das zweite Kennwortfeld mit dem aktualisierten Hash aus
Dies führt zu dem Problem, dass ich nicht sinnvoll zwischen Benutzern mit und Benutzern ohne Passwortaktualisierung unterscheiden kann und daher gezwungen bin, beide zu überprüfen. Dies scheint schrecklich fehlerhaft.
Darüber hinaus bedeutet dies im Grunde genommen, dass die alte Hashing-Technik so lange bestehen bleiben muss, bis jeder einzelne Benutzer sein Passwort aktualisiert hat. Erst in diesem Moment konnte ich anfangen, die alte Hashing-Prüfung zu entfernen und das überflüssige Datenbankfeld zu entfernen.
Ich suche hier hauptsächlich nach einigen Designtipps, da meine aktuelle "Lösung" schmutzig ist, unvollständig und was nicht, aber wenn tatsächlicher Code zur Beschreibung einer möglichen Lösung erforderlich ist, können Sie eine beliebige Sprache verwenden.