Intereting Posts
Обработка отказов электронной почты с помощью PHP? Что такое метод проверки пользовательского вентилятора страницы в API GRAPH? Как установить / использовать php для mac v 10.7.2 Проблема динамической галереи PHP Правильное предотвращение захвата сеанса в PHP session_start () создает новый сеанс при каждом обновлении Почему unserialize в PHP продолжает возвращать false? Cassandra + PHP + Thrift + извлекает плохую производительность нескольких строк Выполнить php-код в Python CakePHP – Как обновить несколько записей Использование почты PHP из нескольких почтовых клиентов (Yahoo | Google | Hotmail | Rediff | Личный почтовый домен) PHP MySQLI подготовленный оператор разбивается на get_results () выберите из mysql db 300 таблиц, используя префикс по умолчанию Рассчитывать месяцы, годы и дни между двумя заданными датами как временная метка Сортировка массивов в многомерный массив с помощью ключа

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

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

     }