2016-04-13 7 views
-1

Hier ist das Szenario:Laravel: Wie mit Hash-Passwort in Laravel anmelden applicaiton

ich ein zufälliges Hash-Passwort gemacht haben und ich schicke es mit Login-Daten an Benutzern Mail (zB E-Mail.). Der Benutzer hat die Mail erhalten, konnte sich aber nicht mit diesem Hash-Passwort in der Site anmelden. Wie löse ich das?

Hier ist mein Controller:

public function sendEmail(Request $request, $id) 
    { 
     $user = User::findOrFail($id); 
      $user->password=Hash::make(str_random(4)); 

     $user->update($request->all());  

     Mail::send('mail', ['user' => $user], function ($m) use ($user) { 
       $m->from('xxxxxx.com', 'xxx'); 
       $m->to($user->email, $user->name)->subject('Thanks!'); 
     }); 
    } 

Jeder möglicher Vorschlag bitte!

Antwort

0

Sie können das Kennwort vor dem Hashing in einer Variablen speichern und es an den Endbenutzer senden.

Stellen Sie sicher, dass Sie Ihr neues Kennwort ($ newPassword) an den E-Mail-Sendeblock senden. oder einfach dem $ user als neues Objekt zuweisen wie '$ user-> passwordTomail = $ newPassword;'

+0

Wie mache ich das? bedeutet, wie sende ich das $ newPassword in mail.blade.php Datei über Controller? – User57

+0

Sie können es als Array in den Blade übergeben, und über 'use' Block in der Mail-sendenden Schließung (genauso wie Sie' user 'in Ihrem Code übergeben). Wie auch immer, Sie können den obigen Block (siehe aktualisierte Antwort) verwenden und {{$ password}} durch {{$ passwordToBeSend}} in Ihrer Blade-Vorlage ersetzen. – VipindasKS

0

Sie müssen Ihre eigene Login-Funktion schreiben, anstatt das eine Laravel zu verwenden. Im Grunde nur die Benutzer aus der Datenbank abrufen und vergleichen Sie es direkt ohne ein weiteres Hashing

function login($id, $password) {  
    $user = User::where('id',$id)->where('password',$password)->first(); 
    if($user){ 
     Auth::login($user); 
    } 
} 

Allerdings ist es keine gute Praxis als Laravel bereits build-in Passwort-Reset-Funktion, die Sie gerade eingeben können php artisan make:auth zu verwenden. Sie können ihre official document für weitere Informationen überprüfen