2017-01-21 5 views
-3

stütze ich möchte Passwort Logik in meiner Website vergessen mit Laravel 5.2Wie implementieren Laravel Passwort vergessen Logik manuell in Laravel 5.2

Ich will nicht auf der aus der Box-Code-Relais, die mit kommt Laravel standardmäßig.

meine Frage: Wie Laravel Passwort Logik manuell zu implementieren implementieren? Es wird gut sein, wenn du mir Schritte folgen kannst?

+1

Nur um klar zu sein ..... Sie wollen die gleiche Funktionalität, die Laravel Sie aus der Box gibt, aber schreiben Sie es auf eigene Faust und Fragen für Schritte? Wenn das anwser ja ist .... copy & paste Laravel Code in Ihre eigenen Dateien und das ist das .... gute Arbeit :) – Bostjan

+0

Es ist wie das Rad neu erfinden. Abgesehen davon finden Sie nichts unangemessenes dabei. Möglicherweise ist das für Ihre Implementierung nicht geeignet. Froh, wenn Sie teilen könnten. – Gayan

Antwort

-1

1.Built ein Passwort vergessen Form:

<h2>Reset Email</h2> 
<form method="POST" role="form" action="{{url('auth/token')}}"> 
{!! csrf_field() !!} 
     <input class="form-control" type="email" name="email" placeholder="Email Address" /><br> 
     <button type="submit" class="btn btn-default">Send Reset link</button> 
</form> 

2.token() Methode in der Steuerung: Aktualisieren der remember_token des Benutzers mit E-Mail zur Verfügung gestellt. E-Mail-Link an den Benutzer mit diesem Token und Benutzernamen als Parameter. Hier ich gerade bin wieder auf den Link

public function token(Request $request) 
    { 
     $token = str_shuffle('abcdefgh1234567890xsYsdsew'); 
     $getEmail=$request->get('email'); 
     $getModel=User::where(['email'=>$getEmail])->first();    
     if($getModel) 
     { 
      $getModel->remember_token=$token; 
      $getModel->update(); 

      return '/auth/reset/'.$getModel->username.'/'.$token; 
     } 
     else 
     { 
      return redirect('/login')->with('message','Email doesnot exist!'); 
     } 

    } 

3.reset() -Methode: Wenn das Token und Benutzernamen in der Datenbank das Token und E-Mail in der Verbindung von E-Mail übereinstimmt, umleiten Benutzer Formularansicht zu ändern.

public function reset($username, $token) 
{   
    $getModel=User::where(['username'=>$username])->first();    
    if($getModel->remember_token==$token) 
    { 
      return View('auth.change', ['id' =>$getModel->id]); 
    } 
    else 
    { 
     return redirect('/auth/forgot');  
    } 
} 

Passwort zurücksetzen Form:

<h2>Reset Password</h2> 
<form method="POST" id="reset" role="form" action="{{url('/auth/change')}}"> 
{!! csrf_field() !!} 
      <input class="form-control" type="password" id="password" name="password" placeholder="New Password" /><br> 
     <input class="form-control" type="password" name="cpassword" placeholder="Confirm Password" /><br> 
      <input type="hidden" name="id" value="<?php echo $id;?>"> 
      <button type="submit" class="btn btn-default">Change password</button> 
</form> 

Änderung() -Methode:

public function change(Request $request) 
    { 
     $getid=$request->get('id'); 
     $getModel=User::where(['id'=>$getid])->first(); 
     $password=Hash::make($request->get('password')); 
     $getModel->password=$password; 
     $getModel->update(); 
     return redirect('/auth/login') 
       ->with('message','Password changed!'); 
    } 

Aber ich ziehe integrierte Funktion.

+0

Die Implementierung von Authentifizierungscode ist keine triviale Aufgabe, weshalb die Verwendung eines etablierten Pakets besser ist als das Schreiben eines eigenen. Dein Code weist eine Sicherheitsanfälligkeit auf. Sobald ich auf der "Reset Password Form" Seite bin, kann ich Ihre versteckte ID-Eingabe manipulieren (was die Benutzer-ID ist) und das Passwort für jeden anderen Benutzer basierend auf der ID ändern. – Bryan

+0

Eine zweite Sicherheitslücke besteht darin, 'str_shuffle ('abcdefgh1234567890xsYsdsew')' zu verwenden, um ein Authentifizierungs-Token zu generieren. Es wäre ziemlich trivial für einen einfachen Angreifer, ein Muster zu erkennen und dann Brute-Force-Tokens zu versuchen. Ein fortgeschrittener Angreifer könnte die Tatsache nutzen, dass "str_shuffle" kein kryptographisch sicherer Zufallsgenerator ist, um Token-Werte vorherzusagen. – Bryan

+0

@Bryan danke für das Testen und Zeigen dieser Sicherheitslücken. Aber ich bekomme immer noch nicht die erste. Wie ist es möglich, das Passwort eines anderen Benutzers zu ändern? –