Необходимо изменить хэширование laravel с bcrypt на Whirlpool
Мне нужно сделать функцию lashvel Hash:: для использования Whirlpool вместо bcrypt. Это должно быть совместимо с классом Auth::.
Поскольку я не очень опытен с Laravel, я не знаю, с чего начать. Я видел файл vendor \ ircmaxell \ password-compat \ lib \ password.php.
Должен ли я создать новое определение в начале этого и попытаться заменить все, чтобы он использовал хэш-функцию php?
Я знаю, что это не оптимально, но это требуется для совместимости.
заранее спасибо
1 ответ
В Laravel 4 класс Hash является фасадом, который по умолчанию использует класс BcryptHasher. Этот класс реализует HasherInterface, который можно увидеть здесь:
Чтобы использовать Whirlpool вместо Bcrypt, вы просто должны написать класс WhirlpoolHasher, который реализует HasherInterface (используйте класс BcryptHasher, чтобы помочь вам), а затем привязать его к псевдониму Hash следующим образом:
App::bind('Hash', function()
{
return new WhirlpoolHasher;
});
Вы можете поместить это где-то глобально, например, route.php, если у вас мало привязок, или, возможно, создать файл bindings.php и требовать его из app/start/global.php.
Альтернативой прямому связыванию может быть изменение класса HashServiceProvider для создания экземпляра WhirlpoolHasher вместо BcryptHasher или создание собственного поставщика услуг и добавление его в массив "provider" в app/config/app.php вместо обычного HashServiceProvider.