Laravel 5.2: csrf-Token funktioniert nicht

7

Hallo Warum ist mein csrf-Token-Wert null? Und wenn ich Token nicht verwende, habe ich nicht TokenMismatchException !!!! Wie kann ich es reparieren?

Ich habe tiefer geforscht und festgestellt, dass eine Sitzung in SessionServiceProvider nicht registriert ist. Gibt es etwas, das aktiviert werden muss, damit dies standardmäßig funktioniert? Da ich ein Laravel-Anfänger bin, bin ich mir nicht sicher, wie ich dem obigen Ratschlag folgen soll. Wie stelle ich sicher, dass meine Routen unter der Gruppe "web" hinzugefügt werden?

%Vor%     
Morteza Negahi 26.12.2015, 20:45
quelle

15 Antworten

22

Vergewissern Sie sich, dass auf Ihre Route das web milddleware angewendet wurde.

So ziemlich jede Route, auf der Sie Sitzungen, csrf-Schutz, verschlüsselte Cookies, Sitzungsfehler usw. wünschen ... Sie werden die 'web' Middleware-Gruppe anwenden müssen.

Überprüfen Sie Ihre routes.php-Datei für die Routengruppe wie folgt:

%Vor%

Update: Seit 5.2.27 Die RouteServiceProvider setzt nun alle Routen in routes.php in einer Routengruppe, für die die web Middleware angewendet wurde.

    
lagbox 28.12.2015, 03:35
quelle
4

In Version 5.2: Sie verschieben Route in:

%Vor%

Habe zwei Möglichkeiten Token in Form zu benutzen ( Ссылка ):

%Vor%

Oder

%Vor%     
Dung Vu 25.02.2016 11:12
quelle
3

verwenden

%Vor%

statt

%Vor%     
cookiemonsta 17.01.2016 00:27
quelle
3

Stellen Sie sicher, dass der Sitzungspfad beschreibbar ist . Wenn nicht, vergleicht laravel null (kein Session-Token) mit dem Wert von $ _POST ['_ token] und löst trotz des wahren Grundes einen Mismatch-Fehler aus.

    
shukshin.ivan 23.05.2016 00:48
quelle
3

Bearbeiten Sie Ihre VerifyCsrfToken.php vom Middleware-Ordner zu diesem

%Vor%

Ich habe das gleiche Problem wie du, ich bin auf Laravel 5.2, ich habe auch ein Token-Feld auf meinem Formular aber immer noch wirft mich der Fehler von "TokenMismatch" sehr nervig auf?

    
Juliver Galleto 04.07.2016 02:56
quelle
3

Nur wenn jemand dieses Problem immer noch trifft,

in config / session.php meine Sitzungen funktionierten im Wesentlichen nicht (obwohl sie eine Weile lang in Ordnung schienen)

Stellen Sie sicher, dass die Variable Domäne auf null gesetzt ist!

Alles für mich als eines der anderen Dinge, wo eigentlich mein Problem behoben.

Ich hoffe, es hilft jemandem.

    
WebTim 16.08.2016 07:32
quelle
1

Ich denke, das ist ein ziemlich tiefes Problem, da es viele Ursachen dafür geben kann. Für mich habe ich von Laravel 5.1 auf 5.2 aufgerüstet. Ich verwende auch die Datenbank, um meine Sitzungen zu speichern. Es gab mir diesen Fehler, aber als ich die Laravel-Fehlerprotokolle (/ storage / logs) überprüfte, fand ich, dass Laravel 5.2 erwartet, dass die Sitzungstabelle die Felder user_id, ip_address und user_agent enthält. Meins nicht. Als ich diese Felder hinzufügte, funktionierte alles wie vor dem Upgrade. Also, mein Rat ist, das Fehlerprotokoll zu überprüfen!

    
omarjebari 07.03.2016 15:01
quelle
0

Vielleicht können Sie dies verwenden: (src = Ссылка )

%Vor%     
Kokno 27.12.2015 07:43
quelle
0

Ich kann dieses Problem bestätigen, sowohl csrf_token () als auch csrf_field () erzeugen leere Tokenfelder in Laravel 5.2. Laut den Dokumenten sollten beide Methoden noch funktionieren, scheinen dies aber nicht zu tun. Meine Installation ist völlig neu, so dass entweder die Dokumente falsch sind oder ein Fehler vorliegt.

    
Jasper 28.12.2015 03:15
quelle
0

Du könntest das einfach benutzen:

%Vor%     
Stefano Groenland 26.01.2016 09:18
quelle
0

Ich habe ein ähnliches Problem. Ich habe nicht herausgefunden, wie ich ein Kernproblem beheben kann, aber ich denke, dass dies eine gute Lösung ist: Laravel 5.x: Leitet CSRF-Fehler an Vorherige Seite
Also statt TokenMismatchException redirect user auf die vorherige Seite mit Fehlermeldung zu werfen.
Um es zu machen override VerifyCsrfToken.($request, Closure $next) Methode.
Öffnen Sie App\Http\Middleware\VerifyCsrfToken.php und gehen Sie zur Basisklasse ( Illuminate\Foundation\Http\Middleware\VerifyCsrfToken ) und kopieren Sie die Handle-Methode in App\Http\Middleware\VerifyCsrfToken.php und ändern Sie die Zeile, die TokenMismatchException zur Weiterleitung an die vorherige Seite auslöst. Fügen Sie auch import use Closure; hinzu. Nach allen Änderungen wird App\Http\Middleware\VerifyCsrfToken.php wie folgt aussehen:

%Vor%

Lösung 2 ist Koffein für Laravel .
Coffeine For Laravel ist ein Paket, das entwickelt wurde, um zu verhindern, dass CSRF-Token beim Ausfüllen eines Formulars auf Ihrer Website ein Zeitlimit setzen.
Mike, der Paketersteller, wollte einen sicheren Weg haben, um Nutzern das Leben leichter zu machen, die sich die Zeit nehmen, Formulare auszufüllen, indem sie den Token durch einen Ajax-Anruf hinter den Kulissen wach halten.

    
gandra404 23.01.2016 20:18
quelle
0

Ich hatte dasselbe Problem. Gelöst, indem Sie alle Dateien in den Sitzungsordner löschten. Der Pfad des Sitzungsordners lautet: Ihre Anwendung / Speicher / Framework / Sitzungen /

    
setu 01.06.2016 19:10
quelle
0

Um die Sicherheit in diesem Formular nicht zu überprüfen, müssen Sie den Dateipfad: config / auth.php auf Laravel aufrufen. In dieser Datei sollten Sie die Zeile 'no_csrf' => array(), finden (oder erstellen). Diese Zeile dient zum Hinzufügen der Routen, deren Sicherheit nicht verifiziert werden kann. In dieser Anordnung müssen Sie den Pfad zu Ihrem Formular hinzufügen, beispielsweise:

%Vor%     
gras 18.05.2016 21:49
quelle
0

Diese Antwort gilt für alle Personen, die {{ csrf_field() }} bereits verwendet haben.  nach dem <form> -Tag in ihrer view.blade.php -Datei und haben auch den Befehl php artisan key:generate ausgeführt, erhalten aber immer noch den Token Mismatch-Fehler. Dies sind die Schritte, die ich unternommen habe, um den TokenMismatchException-Fehler für eines meiner Projekte zu beheben, das sich noch in der Entwicklung befand.

Löschen Sie Cache-Dateien aus den folgenden zwei Ordnern in Ihrem Laravel-Projekt:

  1. Speicherung / Framework / Sitzungen /
  2. Speicher / Framework / Ansichten /

Löschen Sie nach dem Entfernen der Cache-Dateien den Cache Ihres Browsers.

    
Colin Stadig 08.07.2016 13:34
quelle
-1

Ich schlage vor, FormHelper und Form::open() aus Ihrer Sicht zu verwenden. Fomr- und HTML-Helfer wurden in Version 5.0 aus dem Laravels-Kern entfernt, aber Sie können sie nach diesen Anweisungen erneut installieren.

>

Wie auch immer, es gibt einen Tippfehler in Ihrer Sicht. Der korrekte Feldname ist _token und nicht _Token . Vielleicht ist das das Problem

    
Lerzenit 09.05.2016 09:44
quelle

Tags und Links