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%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.
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.
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?
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.
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!
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.
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:
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.
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:
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:
Löschen Sie nach dem Entfernen der Cache-Dateien den Cache Ihres Browsers.
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
Tags und Links php laravel-5 laravel-5.2 laravel