Измените password_hash на bcrypt - PullRequest
0 голосов
/ 27 октября 2018

Я взял старый проект и начал разрабатывать его снова с Laravel, но я борюсь с пользователями, уже зарегистрированными в базе данных.

Я считаю, что они зашифровали пароли с помощью

password_hash ('', PASSWORD_DEFAULT) метод

, но я думаю, что Laravel использует

Bcrypt ()

Так что я могу 'войти в систему, используя эти учетные данные.Можно ли как-нибудь изменить шифрование?

Я не хочу просить пользователей сменить пароль или что-то еще

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Laravel использует хеши bcrypt, те же хеши, которые используются password_hash с алгоритмами PASSWORD_BCRYPT или PASSWORD_DEFAULT.

Следовательно, хэши уже совместимы с Laravel.Это можно легко проверить с помощью тинкера:

> $hash = password_hash('test', PASSWORD_DEFAULT);
"$2y$10$OpnZSN0EbAzMCvywTAWyWOqOme6/3N/xe.nrpcUO6mhLumMxL6DYm"
> Hash::check('test', $hash);
true

Laravel также позволяет легко подключить собственную реализацию интерфейса Hasher, связавшись с контейнером ioc.

0 голосов
/ 27 октября 2018

Чтение очень хорошее руководство показывает PASSWORD_BCRYPT метод:

password_hash("thepassword", PASSWORD_BCRYPT);

Если у них есть существующий пароль, вы можете использовать password_verify() для подтверждения пароля, независимо от того, как он был хеширован.


Вы можете конвертировать пользователя в новые хэши паролей, но только при входе в систему. Вам нужно будет добавить еще один столбец для хранения нового пароля, затем при входе в систему проверьте существующий пароль (проверьте, если это возможно) и пустой в новом столбце. Если новый столбец не пустой, сравните его с password_verify(). Если он не указан, хэшируйте новый пароль с помощью показанного метода.

В конечном счете, каждый из них будет менять свой хэширующий метод при входе в систему, но с вашей стороны потребуется определенная работа, чтобы привести код в достаточную форму, чтобы выполнить преобразование безопасно и надежно.

...