Utrzymujesz istniejącą aplikację z ustaloną bazą użytkowników. Z czasem zdecydowano, że obecna technika haszowania haseł jest nieaktualna i wymaga aktualizacji. Ponadto, z powodów UX, nie chcesz, aby istniejący użytkownicy byli zmuszani do aktualizacji swojego hasła. Cała aktualizacja skrótu hasła musi odbywać się za ekranem.
Załóżmy „uproszczony” model bazy danych dla użytkowników, który zawiera:
- ID
- Hasło
Jak podchodzi się do rozwiązania takiego wymogu?
Moje obecne myśli to:
- utwórz nową metodę mieszania w odpowiedniej klasie
- zaktualizuj tabelę użytkowników w bazie danych, aby zawierała dodatkowe pole hasła
- Gdy użytkownik pomyślnie zaloguje się przy użyciu nieaktualnego skrótu hasła, wypełnij drugie pole hasła zaktualizowanym skrótem
Pozostawia mi to problem polegający na tym, że nie mogę rozsądnie rozróżnić między użytkownikami, którzy mają, a tymi, którzy nie zaktualizowali skrótu hasła, i dlatego będę zmuszony sprawdzić oba. To wydaje się okropnie wadliwe.
Co więcej, oznacza to w zasadzie, że stara technika haszująca może zostać zmuszona do pozostania na czas nieokreślony, dopóki każdy użytkownik nie zaktualizuje swojego hasła. Dopiero w tym momencie mogłem rozpocząć usuwanie starego testu mieszania i usunąć zbędne pole bazy danych.
Głównie szukam tutaj kilku wskazówek projektowych, ponieważ moje obecne „rozwiązanie” jest brudne, niekompletne, a co nie, ale jeśli rzeczywisty kod jest wymagany do opisania możliwego rozwiązania, możesz użyć dowolnego języka.