@AleDv

Как перевести базу пользователей с паролями в md5 на хешер в Laravel?

Всем привет. Есть старый сайт, на котором пароли пользователей хешируются с помощью md5. Новый сайт написал на фрейме Laravel c модулем Sentinel для работы с пользователями.

При переносе данных столкнулся с проблемой совместимости паролей. Сами пароли в md5, а при регистрации новых юзеров, восстановлении пароля и проверки при входе на сайт используется другой алгоритм хеширования (bcrypt).

Какие варианты есть переноса пользователей?

P.S. была идея в лоб: просто перегенерировать пароли и выслать уведомления пользователям, но это как-то не гуманно по отношению к пользователям.
  • Вопрос задан
  • 630 просмотров
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
PostgreSQL DBA
Можете добавить default null поле для нового хеша пароля.
На момент успешной авторизации вы знаете действительный пароль пользователя, значит если новый пароль в базе null, а старый хэш совпал, то сохраняете новый хеш в новое поле, а поле со старым паролем скидываете в null.
Через пару месяцев/полгода/год/выбрать_по_настроению вырезаете код старого хэша и дропаете колонку из базы. Всем желающим авторизоваться, но у кого стоит null вместо пароля - пишете, что необходимо пройти процедуру восстановления пароля.

Активная аудитория изменение не заметит. Теми, кто заходит слишком редко - придётся пожертвовать и заставить пройти более длинную процедуру.
Ответ написан
Комментировать
Denormalization
@Denormalization
P.S. была идея в лоб: просто перегенерировать пароли и выслать уведомления пользователям, но это как-то не гуманно по отношению к пользователям.

Имхо самое оптимальное решение.
- Перегенерить всё на рандомные пароли, и в БД поставить флаг "change_password".

При заходе просто показывать ошибку что нужно воспользоваться функцией "Восстановить пароль"
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Правильный ответ дали.
Напишу вредный.

Захешировать хеши еще раз тем чем хотите.
При проверке пароля -> сначала переводить в md5 всегда.

Так вы сохраните пароли, правда придётся покодить и подумать куда воткнуться чтобы перед хешированием из коробки срабатывало хеширование md5.
Middleware наверно проще всего повесить и входящие пароли md5 делать, затем дальше пускать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы