TokenMismatchException in VerifyCsrfToken.php Zeile 53 in Laravel 5.1

8

Wenn ich versuche mich anzumelden, zeige mir einen Tokenfehler an. Ich habe das Token in der Ansichtsform überprüft, es ist richtig und wenn Kommentar \App\Http\Middleware\VerifyCsrfToken::class , in Kernel.php macht es mich Login aber nach Redirect zu meinem Dashboard bin ich nicht eingeloggt. Ich benutze MAMP auf mac.

%Vor%

Inzwischen benutze ich Sentry Package für den Login.

%Vor%     
reza_khalafi 19.06.2015, 09:42
quelle

13 Antworten

5

Bearbeitet:

Da Sie den Formular-Generator verwenden, entfernen Sie diesen aus Ihrem Formular. Laravel Formular-Generator fügt automatisch ein verstecktes Token-Feld zu Ihrem Formular hinzu, wenn Sie Form::open()

ausführen

Also entferne diese Zeile:

%Vor%     
Digitlimit 19.06.2015, 11:13
quelle
1

Mit einer neuen Installation von Laravel 5.1, ohne nur ein Composer-Update von Version 5.0 auf 5.1, sehe ich einige Unterschiede und einen im Middleware-Ordner.

EncryptCookies.php sind eine neue Middleware, überprüfen Sie, ob Sie sie haben.

Also, ich habe es nicht nochmal getestet, ich übertrage im Moment meine Dateien von meiner Version 5.0 auf eine Neuinstallation von Version 5.1 aber ich bin mir ziemlich sicher, dass das die Lösung für dieses Problem sein kann, EncryptCookies.php war in der Stapel des Token-Mismatch-Fehlers.

    
Gabriel Sigouin 28.07.2015 00:48
quelle
1

Nun, ich denke, alle haben die CSRF-Token-Erstellung beim Abmelden verpasst!

Wie ich das Problem gelöst habe.

Fügen Sie einfach den folgenden Code zur Kopfzeile hinzu.

%Vor%

Und wenn Sie {!!Form::open()!!} verwenden, wird automatisch das Token erstellt. Andernfalls können Sie

verwenden %Vor%

oder

%Vor%

nur sofortige Form offen. Am wichtigsten ist die Verwendung von return Redirect::to(''); auf der Controller-Funktion oder ein Seiten-Reload oder ein Ajax-Reload, mit dem das Token erstellt werden kann!

Wie:

%Vor%

Um sicherzustellen, dass das Token ordnungsgemäß erstellt wurde oder nicht, klicken Sie im Browser auf "Seitenquelle anzeigen" und es wird angezeigt:

%Vor%

Ich denke, dass es das Problem lösen könnte, wie es für mich arbeitete!

    
Honest Knight 05.10.2015 06:08
quelle
1

Das Hinzufügen von {!! csrf_field() !!} hat mein Problem wie folgt gelöst:

%Vor%

Wenn Sie den Laravel Form-Helper wie unten verwenden:

%Vor%

CSRF-Code wird automatisch in Ihrem HTML-Skript hinzugefügt. Stellen Sie außerdem sicher, dass Sie den Quellcode im Browser anzeigen, um sicherzustellen, dass ein Feld wie das folgende tatsächlich hinzugefügt wurde.

%Vor%     
Fokwa Best 24.04.2016 15:52
quelle
0

Sie haben Ihren Beispielcode nicht in Ihre Frage eingegeben.

Überprüfen Sie daher Ihren Code mit den folgenden Optionen,

versuche mit versteckten Eingabefeld Wert:

%Vor%

Sie können auch die Form Blade-Vorlage verwenden:

%Vor%

Dies fügt CSRF-Code automatisch in Ihr HTML-Skript ein

Eine weitere Sache, die in <head> eingefügt werden soll, ist:

%Vor%     
Siddharth Jogia 19.06.2015 11:41
quelle
0

Ich hatte dieses Problem auch, als ich versuchte, eine Datei hochzuladen. Es stellte sich heraus, dass die max_post_size überschritten wurde. In diesem Fall werden offensichtlich alle POST-Variablen gelöscht und daher wird kein Token empfangen.

    
Dennis Koster 08.09.2015 08:43
quelle
0

Fügen Sie <?php echo Form::token(); ?> in das Formular hinzu.

    
IshaS 21.10.2015 09:56
quelle
0

Diese Lösung hat für mich funktioniert:

Fügen Sie {{ csrf_field() }} an einer beliebigen Stelle im Formular hinzu.

    
Mario Ene 13.11.2015 07:28
quelle
0

Entfernen Sie App \ Http \ Middleware \ VerifyCsrfToken :: class aus $ middleware in der Kernel.php.

    
user1236395 09.12.2015 02:59
quelle
0

Ich habe den folgenden Code verwendet. Es funktioniert perfekt.

%Vor%     
user3378755 15.12.2015 12:56
quelle
0

Ich hatte das gleiche Problem. Ich benutze Laravel 5.1.28, php 5.6.13
Nachdem ich die TokenMismatchException in VerifyCsrfToken gesehen hatte, suchte ich im Internet nach Antworten, aber keine löste mein Problem.

Die Seite hat das Token gesendet. Die Token-Werte werden auch in der Sitzungsdatei im Verzeichnis storage / framework / sessions angezeigt (ich habe die Verschlüsselung deaktiviert, um sie zu sehen).

Erschöpft, ich laravel neu installieren und einfaches Formular zum Testen verwenden - es funktionierte ohne Token-Mismatch-Fehler.

Ich habe meinen Code Stück für Stück auf das neu installierte Laravel übertragen und endlich gefunden dass das Problem von Doktrin / Dbal verursacht wurde (ich weiß immer noch nicht warum).

Wurde von composer.json entfernt und das Problem ist verschwunden.
In der Datei composer.json wurde der Token-Mismatch-Fehler mit der folgenden Zeile angezeigt:

%Vor%

Ihr Fall ist vielleicht anders, aber Sie möchten vielleicht sehen, ob Sie etwas ändern composer.json, die möglicherweise das Problem verursacht.

    
Brian Ye 28.01.2016 18:02
quelle
0

Ich habe dasselbe Problem während der Verwendung dieses Codes

%Vor%

durch Ändern in {!! csrf_field() !!} löse mein Problem

  

Ich bin auf L5.1

    
majid 05.07.2016 06:59
quelle
0

Es funktioniert für mich.

%Vor%     
Mamun Rasid 28.07.2016 12:11
quelle