Необходимо изменить хэширование laravel с bcrypt на Whirlpool

Мне нужно сделать функцию lashvel Hash:: для использования Whirlpool вместо bcrypt. Это должно быть совместимо с классом Auth::.

Поскольку я не очень опытен с Laravel, я не знаю, с чего начать. Я видел файл vendor \ ircmaxell \ password-compat \ lib \ password.php.

Должен ли я создать новое определение в начале этого и попытаться заменить все, чтобы он использовал хэш-функцию php?

Я знаю, что это не оптимально, но это требуется для совместимости.

заранее спасибо

1 ответ

Решение

В Laravel 4 класс Hash является фасадом, который по умолчанию использует класс BcryptHasher. Этот класс реализует HasherInterface, который можно увидеть здесь:

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.

Другие вопросы по тегам