Frage

Ich versuche, die Passwort-Reset-Logik zu implementieren.Der Benutzer erhält den Link zum Zurücksetzen des Passworts in der E-Mail.Die URL sieht aus wie

http://example.com/reset/resetcode

Ich habe die Route dafür definiert:

Route::get('reset/{resetcode}', function(){
    return View::make('users.reset_password');
});

Das Formular wird in der Ansicht zum Senden gerendert email, new password usw.Für den Beitrag des Formulars habe ich die Route wie folgt definiert:

Route::post('reset/{resetcode}', array( 'as' => 'reset', 'uses' => 'UserController@passwordReset'));

Ich schnappe mir das resetcode aus post route im Inneren passwordReset Controller unten

public function passwordReset($resetcode)
{ 
    $validation = Validator::make(Input::all(), UserModel::$rulesPasswordReset);
    if ($validation->passes())
    { 
    try
    {
    // Find the user using the user email address
    $user = Sentry::findUserByLogin(Input::get('email'));

    // Check if the reset password code is valid
    if ($user->checkResetPasswordCode($resetcode))
    {
        // Attempt to reset the user password
        if ($user->attemptResetPassword($resetcode, 'new_password'))
        {
        // Password reset passed
         }
         else
         {
        // Password reset failed
         }
    }
    else
    {
        // The provided password reset code is Invalid
    }
        }
        catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
        {
       echo 'User was not found.';
        }
    }
    else return Redirect::route('reset')->withInput()
    ->withErrors($validation)
    ->with('title', 'resetrequestfailure')
    ->with('message', 'Seems like you made some errors.');
   }

Das Problem, das ich habe, ist, wenn ich es tue Redirect::route nachdem die Validierung fehlgeschlagen ist. Ich bekomme das resetcode von der für definierten Route post.Wenn die Validierung fehlschlägt, ist die Umleitungsroute fehlerhaft und ich kann sie nicht abrufen resetcode das zweite Mal.Die angebliche URL des Formats

 http://example.com/reset/8f1Z7wA4uVt7VemBpGSfaoI9mcjdEwtK8elCnQOb

wird

http://bcnet.org/reset/%7Bcode%7D

Es hat mit ... zu tun /{resetcode} Teil der Route und dieser ist variabel. Wie kann ich also das Richtige finden? resetcode Auch wenn die Validierung fehlschlägt, bleibt die URL intakt.Oder wie kann ich es entsprechend beheben Redirect::route nach dem Validierungsfehler.

War es hilfreich?

Lösung

Sie müssen die einschließen $resetcode bei Ihrer Rückkehr

else return Redirect::route('reset', $resetcode)->withInput()
    ->withErrors($validation)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top