Я пытаюсь расширить 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;}); } }