2016-08-29 4 views
0

Ich benutze Laravel 5.2 und ich habe ein Formular, das ein Benutzer senden kann.TokenMismatchException in VerifyCsrfToken.php in Laravel

Ich verwende nicht das Formular Helfer, aber ich sicher, dass ich diese meine Form Klinge Ansichten in alle enthalten:

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

Als ich mit dem Formular es auf der Webseite zu gehen, zeigt es das Formular als erwartet, dann gebe ich es ein, es funktioniert wie erwartet.

Ein anderer Fall ist, gehe ich auf die Webseite, ich gehe weg und komme 30 Minuten später zurück und versuche, das Formular einzureichen und mir wird der Fehler angezeigt. Ich bin ziemlich sicher, es ist, weil das Token abgelaufen ist, aber was ich versuche zu überprüfen, ob das Token abgelaufen ist, umleiten Sie den Benutzer auf die gleiche Seite (die das Token aktualisiert) mit einer Fehlermeldung, die das erklärt Formular war abgelaufen.

In der Theorie auf einreichen, prüfen:

if token expired 
    return redirect('login')->with('error', 'The form expired, please try again'); 
endif 

Gibt es eine Möglichkeit dafür zu überprüfen, statt Laravel des Standardfehlerbildschirm angezeigt wird?

Antwort

0

Sie sollten ein benutzerdefiniertes Verhalten für die Methode handle in VerifyCsrfToken Middleware definieren. Wenn das Token abgelaufen ist, wird standardmäßig die Ausnahme TokenMismatchException ausgelöst.

0

Ich habe das meine handler.php Render-Methode:

if ($e instanceof \Illuminate\Session\TokenMismatchException) { 

    return redirect() 
     ->back() 
     ->withInput($request->except('_token')) 
     ->with('status', 'The form has expired, please try again.'); 
} 
Verwandte Themen