Laravel 5: использование SHA1 вместо Bcrypt

Я пытаюсь продлить Bcrypt по умолчанию HashServiceProvider в уровне 5 для использования шифрования SHA1.

Используя ответ на этот вопрос: Как использовать шифрование SHA1 вместо BCrypt в Laravel 4? и официальная документация на http://laravel.com/docs/5.0/extending#container-based-extension, Мне удалось приготовить следующий код:

В приложение / Провайдеры / ShaHashServiceProvider.php


использовать App \ ShaHasher;
использовать Illuminate \ Hashing \ HashServiceProvider;

класс ShaHashServiceProvider extends HashServiceProvider {

публичная функция boot ()
{
Родитель :: загрузки ();

$ this-> app-> bindShared ('hash', function ()
{
вернуть новый ShaHasher ();
});
}

}

В Приложение / ShaHasher.php


используйте Illuminate \ Contracts \ Hashing \ Hasher в качестве HasherContract;

класс ShaHasher реализует HasherContract {

публичная функция make ($ value, array $ options = array ()) {
$ value = env ('SALT', ''). $ value;
вернуть sha1 ($ value);
}

проверка публичной функции ($ value, $ hashedValue, массив $ options = array ()) {
return $ this-> make ($ value) === $ hashedValue;
}

публичная функция needsRehash ($ hashedValue, массив $ options = array ()) {
вернуть ложь;
}

}

В приложение / Config / app.php


'провайдеры' => [
...
// 'Осветите \ хеширование \ HashServiceProvider',
'App \ Providers \ ShaHashServiceProvider',
...
],

Я также использую Laravels из коробки AuthController обрабатывать логины.

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

Я не получаю никаких ошибок, только «Упс! Были некоторые проблемы с вашим вкладом. Эти учетные данные не соответствуют нашим записям.сообщение

Мне интересно, что именно, что пошло не так и где? Я надеюсь, что некоторые из вас, гении, могут мне помочь!

6

Решение

Я решил проблему сам 🙂

В приложение / Провайдеры / ShaHashServiceProvider.php Я переопределил неправильный метод boot()когда это был на самом деле метод register() Я должен был переопределить.


использовать App \ ShaHasher;
использовать Illuminate \ Hashing \ HashServiceProvider;

класс ShaHashServiceProvider extends HashServiceProvider {

регистр публичной функции ()
{
$ this-> app-> singleton ('hash', function () {return new ShaHasher;});
}

}

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector