Я пытаюсь продлить 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
обрабатывать логины.
Но похоже, что это не работает, как я хотел. В первый раз, когда я пытался войти, все работало отлично. Затем я вышел из системы, и с тех пор каждая попытка войти не удалась.
Я не получаю никаких ошибок, только «Упс! Были некоторые проблемы с вашим вкладом. Эти учетные данные не соответствуют нашим записям.сообщение
Мне интересно, что именно, что пошло не так и где? Я надеюсь, что некоторые из вас, гении, могут мне помочь!
Я решил проблему сам 🙂
В приложение / Провайдеры / ShaHashServiceProvider.php Я переопределил неправильный метод boot()
когда это был на самом деле метод register()
Я должен был переопределить.
использовать App \ ShaHasher; использовать Illuminate \ Hashing \ HashServiceProvider; класс ShaHashServiceProvider extends HashServiceProvider { регистр публичной функции () { $ this-> app-> singleton ('hash', function () {return new ShaHasher;}); } }
Других решений пока нет …