2016-04-15 4 views
0

Ich beginne gerade mit Laravel 5, ich mache eine einfache Login-Funktion, um zu überprüfen, ob E-Mail und Passwort vom Benutzer mit der E-Mail und dem Passwort in der Datenbank übereinstimmt . Ich habe die Dokumentation gelesen ([https://laravel.com/docs/5.0/hashing1) aber Hash::check($content['password'], $user->{'password'}) gibt immer false zurück. Mein Code sieht so aus.Hash :: check() return false in laravel 5

Wenn ich einen neuen Benutzer erstellen Hash ich das Passwort wie folgt aus:

$content = json_decode($request->getContent(), true); 

$user -> password = Hash::make($content['email']); 

Und meine Login-Funktion sieht wie folgt aus:

public function login(Request $request) 
{ 
    $content = json_decode($request -> getContent(), true); 

    $user = DB::table('users')->where('email', $content['email'])->first(); 


    if (Hash::check($content['password'], $user->{'password'})) 
    { 
     // Redirect to dashboard 
    } 
} 

Vielen Dank im Voraus !!

+0

Haben Sie versucht, 'if (Hash :: check ($ content ['password'], $ user -> {'password'})) zu' if (Hash :: check ($ content ['password') ], $ user-> passwort)) '? – Ian

+0

Ich bekomme das gleiche Ergebnis ... –

+0

@IcarKwon ich hoffe, meine Antwort wird dies beheben :) – aimme

Antwort

0

Eigentlich Hashing der E-Mail anstelle von Passwort, während die Besatzung den Benutzer den Code ändern $ user -> password = Hash :: make ($ content ['email']); bis $ user-> password = Hash :: make ($ content ['password']);

+0

Oh mein Gott ... was für eine Schande. Ich verbringe meine letzten 3 Stunden ... hahaha Danke @Jinu P C –

0

Ich kam mit dem gleichen Problem. Überprüfen Sie die Tabelle der Datenbankbenutzer, das Passwortfeld. mach die Größe des Feldes auf 60 oder mehr. das hat meine repariert.

+0

Mein Passwort Feld ist ein VARCHAR 255 Länge :(. Danke trotzdem !! :) –

0

Die Fassade Hash wird nur Ihre Daten verschlüsseln:

Hash::make('123456'); 

ist die gleiche, dass:

$password = bcrypt('123456'); 

einen Benutzer Sie AuthController Funktionen verwenden müssen, um sich einzuloggen:

Auth::attempt(['email' => '[email protected]' , 'password' => Hash::make('password')]); 

Es ist ein Beispiel.

Wenn Sie eine Anfrage sind erhalten haben, können Sie diese Methode hinzufügen, um sich einzuloggen:

if(Auth::attempt(['email' => $request->email, 'password' => $request->password , 'active' => 1])){ 
     flash()->success('Successfully logged in!'); 
     return redirect('/'); 
} 

der Versuch Funktion Ihr Passwort-Feld Hash und mit Datenbank-Daten vergleichen wird.