Вы поддерживаете существующее приложение с установленной базой пользователей. Со временем было решено, что текущая техника хеширования паролей устарела и нуждается в обновлении. Кроме того, по причинам UX, вы не хотите, чтобы существующие пользователи были вынуждены обновить свой пароль. Все обновление хэширования паролей должно происходить за экраном.
Предположим «упрощенную» модель базы данных для пользователей, которая содержит:
- МНЕ БЫ
- Эл. адрес
- пароль
Как можно решить такое требование?
Мои нынешние мысли:
- создать новый метод хеширования в соответствующем классе
- обновить таблицу пользователей в базе данных для хранения дополнительного поля пароля
- Как только пользователь успешно войдет в систему с использованием устаревшего хэша пароля, заполните второе поле пароля обновленным хэшем
Это оставляет меня с проблемой, что я не могу разумно провести различие между пользователями, которые имеют и теми, кто не обновил свой хэш пароля и, следовательно, будет вынужден проверить оба. Это кажется ужасно ошибочным.
Кроме того, это в основном означает, что старая техника хэширования может быть вынуждена оставаться неопределенно долго, пока каждый пользователь не обновит свой пароль. Только в этот момент я могу начать удалять старую проверку хэширования и удалять лишнее поле базы данных.
Здесь я в основном ищу несколько советов по дизайну, так как мое текущее «решение» грязное, неполное, а что нет, но если для описания возможного решения требуется реальный код, не стесняйтесь использовать любой язык.