Я пытаюсь расширить Bcrypt HashServiceProvider по умолчанию в laravel 5, чтобы вместо этого использовать шифрование SHA1.
Используя ответ на этот вопрос: Как использовать шифрование SHA1 вместо BCrypt в Laravel 4? и официальную документацию по адресу http://laravel.com/docs/5.0/extending#container-based-extension , мне удалось подготовить следующий код:
В приложении / Провайдеры / ShaHashServiceProvider.php
использовать приложение \ ShaHasher;
используйте Illuminate \ Hashing \ HashServiceProvider;
класс ShaHashServiceProvider расширяет HashServiceProvider {
публичная функция boot ()
{
Родитель :: загрузки ();
$ this-> app-> bindShared ('hash', function ()
{
вернуть новый ShaHasher ();
});
}
}
В приложении / ShaHasher.php
используйте Illuminate \ Contracts \ Hashing \ Hasher as HasherContract;
класс ShaHasher реализует HasherContract {
public function make ($ value, array $ options = array ()) {
$ value = env ('SALT', ''). $ value;
return sha1 (значение $);
}
public function check ($ value, $ hashedValue, array $ options = array ()) {
return $ this-> make ($ value) === $ hashedValue;
}
public function needsRehash ($ hashedValue, array $ options = array ()) {
return false;
}
}
В app / config / app.php
'providers' => [
...
// 'Осветите \ хеширование \ HashServiceProvider',
'App \ Providers \ ShaHashServiceProvider',
...
],
Я также использую Larvels из AuthController для обработки логинов.
Но похоже, что он не работает, как я предполагал. В первый раз, когда я попытался войти, все работало отлично. Затем я вышел из системы, и с тех пор всякая попытка входа в систему провалилась.
Я не получаю никаких ошибок, просто « Упс!» Были некоторые проблемы с вашим вводом. Эти учетные данные не соответствуют нашим записям. ».
Мне интересно, что именно случилось, и где? Надеюсь, некоторые из вас гениев могут помочь мне!
Я сам решил эту проблему 🙂
В app / Providers / ShaHashServiceProvider.php я переопределил неправильный метод boot() , когда это был фактически register() метода register() я должен был переопределить.
использовать приложение \ ShaHasher;
используйте Illuminate \ Hashing \ HashServiceProvider;
класс ShaHashServiceProvider расширяет HashServiceProvider {
регистр публичных функций ()
{
$ this-> app-> singleton ('hash', function () {return new ShaHasher;});
}
}