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.
Inzwischen benutze ich Sentry Package
für den Login.
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()
Also entferne diese Zeile:
%Vor%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.
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
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!
Das Hinzufügen von {!! csrf_field() !!}
hat mein Problem wie folgt gelöst:
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%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:
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.
Entfernen Sie App \ Http \ Middleware \ VerifyCsrfToken :: class aus $ middleware in der Kernel.php.
Ich habe den folgenden Code verwendet. Es funktioniert perfekt.
%Vor% 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:
Ihr Fall ist vielleicht anders, aber Sie möchten vielleicht sehen, ob Sie etwas ändern composer.json, die möglicherweise das Problem verursacht.
Tags und Links php session session-cookies laravel-5 csrf