Ви підтримуєте наявну програму зі встановленою базою користувачів. З часом вирішено, що поточна техніка введення пароля застаріла і потребує вдосконалення. Крім того, з причин UX ви не хочете, щоб існуючі користувачі змушували оновлювати свій пароль. Ціле оновлення хешування паролів має відбуватися за екраном.
Припустимо, модель "спрощеної" бази даних для користувачів, яка містить:
- Посвідчення особи
- Електронна пошта
- Пароль
Як можна вирішити таку вимогу?
Мої поточні думки:
- створити новий метод хешування у відповідному класі
- оновіть таблицю користувачів у базі даних, щоб містити додаткове поле пароля
- Після того, як користувач успішно ввійде в систему, використовуючи застарілий хеш пароля, заповніть друге поле пароля оновленим хешем
Це викликає у мене проблему, що я не можу розумно розмежовувати користувачів, які мають, і тих, хто не оновив хеш паролів, і, таким чином, змушений буде перевірити і те, і інше. Це здається жахливо хибним.
Крім того, це в основному означає, що стару техніку хешування можна змусити залишатись на невизначений термін, поки кожен користувач не оновить свій пароль. Тільки в цей момент я міг почати видаляти старий хеш-чек і видалити зайве поле бази даних.
Я в основному шукаю поради щодо дизайну, оскільки моє поточне «рішення» є брудним, неповним, а що ні, але якщо для опису можливого рішення потрібен фактичний код, сміливо використовуйте будь-яку мову.