2016-11-04 5 views
0

Ich bin mit Laravel 5.3 und die laravelcollective/html Form Helfer.TokenMismatchException wenn ein Formular erneut einreichen

Wenn ich ein Formular einreichen, wenn die Validierung fehlschlägt es Sie zurück in die gleiche Form return redirect()->back()->with

Dann mit nimmt, wenn ich die gleiche Form erneut wieder werde ich einen TokenMismatchException bekommen, ist happenned was, dass die csrf Token tat nicht aktualisiert, nachdem das Formular neu geladen wurde.

Irgendwelche Ideen, wie kann ich das Token aktualisiert bekommen?

-Update 7.11

das Formular öffnen ich folgendes verwenden:

{!! Form::open(['url'=>'/user/create', 'method'=>'post', 'id'=>'create']) !!} 

, die das Token-Feld fügt automatisch.

Aber auch habe ich versucht, das Token manuell hinzufügen, wie folgt aus:

{!! Form::open(['url'=>'/user/create', 'method'=>'post', 'id'=>'create']) !!} 
{!! Form::token() !!} 

Dabei wird der Token tatsächlich zweimal erstellt wird, sind beide Token gleich sein.

+0

es mehrere Gründe für Laravel nicht das Token auf Redirect könnte erfrischend. Können Sie das Code-Snippet Ihres Formulars teilen? Sie können auch einen Laravel-Weg zum Hinzufügen von Token versuchen, d. H. {{Form :: token(); }}, anstatt es selbst als verstecktes Formularfeld hinzuzufügen. Lass es mich wissen, wenn es hilft. –

+0

Vielen Dank Shuja, ich habe die Frage mit Ihrem Vorschlag aktualisiert, immer noch besteht das Problem –

Antwort

0

Das Problem war, dass ich den Wert _token zurück zur Ansicht schickte. Was ich tat, war:

return redirect() 
->back() 
->with(
['errors' => $validator->errors()->all()] 
+ $request->input() 
); 

Wo die $ request-> Eingang ('_ token') nicht gefiltert wurde. Stattdessen habe ich es für die folgenden geändert, die funktioniert, wie es _token filtert:

return redirect() 
->back() 
->withErrors($validator->errors()->all()) 
->withInput($request->input());