2015-03-11 7 views
6

Ich versuche, die Standard-BCrypt in Laravel 5 zu erweitern, um stattdessen die SHA1-Verschlüsselung zu verwenden.Laravel 5: Verwendung von SHA1 anstelle von Bcrypt

die Antwort auf dieser Frage verwenden: How to use SHA1 encryption instead of BCrypt in Laravel 4? und die offiziellen Dokumentation bei http://laravel.com/docs/5.0/extending#container-based-extension gelang I'v ​​den folgenden Code, um zu kochen:

In app/Anbieter/ShaHashServiceProvider.php

 

    use App\ShaHasher; 
    use Illuminate\Hashing\HashServiceProvider; 

    class ShaHashServiceProvider extends HashServiceProvider { 

     public function boot() 
     { 
      parent::boot(); 

      $this->app->bindShared('hash', function() 
      { 
       return new ShaHasher(); 
      }); 
     } 

    } 

In app/ShaHasher.php

 

    use Illuminate\Contracts\Hashing\Hasher as HasherContract; 

    class ShaHasher implements HasherContract { 

     public function make($value, array $options = array()) { 
      $value = env('SALT', '').$value; 
      return sha1($value); 
     } 

     public function check($value, $hashedValue, array $options = array()) { 
      return $this->make($value) === $hashedValue; 
     } 

     public function needsRehash($hashedValue, array $options = array()) { 
      return false; 
     } 

    } 

In app/config/app.php

 

    'providers' => [ 
      ... 
      //'Illuminate\Hashing\HashServiceProvider', 
      'App\Providers\ShaHashServiceProvider', 
      ... 
    ], 

Ich verwende Laravels auch out-of-the-box AuthController Logins zu handhaben.

Aber es scheint, dass es nicht funktioniert, wie ich es vorhatte. Als ich mich das erste Mal anmeldete, funktionierte alles perfekt. Dann habe ich mich ausgeloggt und seitdem ist jeder Anmeldeversuch fehlgeschlagen.

Ich bekomme keine Fehler, nur die "Hoppla! Es gab einige Probleme mit Ihrer Eingabe. Diese Anmeldeinformationen stimmen nicht mit unseren Aufzeichnungen." Nachricht.

Ich frage mich was genau was schief gelaufen ist, und wo? Ich hoffe, einige von euch Genies können mir helfen!

+2

Warum? SHA1 ist nicht sehr sicher. – lukasgeiter

+0

@lukasgeiter - Ich migriere eine alte CakePHP App (die SHA1 verwendet) nach Laravel 5. – TheNish

+1

Dann würde ich versuchen, die Passwörter tatsächlich auf bcrypt zu migrieren. [Diese Antwort beschreibt, wie ein solcher Migrationsprozess funktionieren könnte] (http://stackoverflow.com/a/28519426/1903366) – lukasgeiter

Antwort

6

I'v das Problem selbst :-)

In app/Anbieter/ShaHashServiceProvider.php gelöst overrided ich die falsche Methode boot(), wenn es in der Tat war die Methode register() Ich habe außer Kraft gesetzt sollte.

 

    use App\ShaHasher; 
    use Illuminate\Hashing\HashServiceProvider; 

    class ShaHashServiceProvider extends HashServiceProvider { 

     public function register() 
     { 
      $this->app->singleton('hash', function() { return new ShaHasher; }); 
     } 

    } 

Verwandte Themen