Laravel 5.2 : csrf-token funktioniert nicht
Hi, Warum meine csrf-token-Wert null ist ? Und wenn ich das nicht verwenden token, ich habe nicht TokenMismatchException!!!! wie kann ich es beheben ?
Ich tiefer gegraben und festgestellt, dass eine Sitzung nicht registriert SessionServiceProvider. Gibt es etwas, das muss aktiviert sein, damit dies funktioniert standardmäßig? Da bin ich ein Laravel Anfänger, ich bin nicht sicher, wie die genannten Ratschläge befolgen. Wie kann ich sicherstellen, dass meine Routen Hinzugefügt werden unter der Gruppe "web"?
<form method="post" action="<?php echo url('/form'); ?>">
<input type="hidden" name="_Token" value="{{ csrf_token() }}">
<input type="text" name="Title" placeholder="Title"><br>
<textarea rows="10" name="Content" placeholder="Content"></textarea><br>
<input type="submit" value="Send">
</form>
- Posting ein Bild wird nicht sehr viel helfen. Ist Ihre Seite eine Klinge Vorlage? z.B.
your-page.blade.php
? - Ja . meine Seite haben .blade.php. Ich Schreibe die csrf_token (), aber wenn ich element untersuchen der Seite . _token input-Wert ist null !
- Das ist seltsam. Ich benutze diese die ganze Zeit ohne Probleme. Versuchen Sie, auf der echo-token zu sehen, was passieren
value="<?php echo csrf_token(); ?>"
- Geben Sie uns Ihren code.
- Haben Sie versucht @Franco ' s Vorschlag? Oder versuchen Sie, entfernen der
_token
Feld. Laravel hinzufügen_token
von selbst, wenn nicht in einer form vorliegen. - laravel 5.2 nicht brauchen, um set-token für die form ? Rahmen hinzufügen der automatischen token zu bilden ?
- Laravel überprüft jede form für
csrf field
wenn nicht gibt es hinzufügen, ein sich selbst. It-check fürcsrf token
zu. Probieren Sie es einfach aus. - Aber wenn Session:: nicht beginnen, registrieren Sie sich für den Kunden in der laravel5.2 csrf-token, wie auf der Arbeit 😐 | sorry ich bin Anfänger, ich kann das verstehen 😐
- Wenn Sie nicht hinzufügen eine
csfr field
Laravel Hinzugefügt. So haben Sie immer einecsrf field
in Ihrer form. Ich nicht hinzufügencsrf
von mir, aber wenn ich überprüfen mein code gibt es immer einecsfr field
vorhanden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, Ihre route hat die web milddleware angewendet.
So ziemlich jede route, wo Sie wollen, Sitzungen, csrf-Schutz, verschlüsselte cookies, session-Fehler, etc ... benötigen Sie die " web " - middleware-Gruppe angewendet.
Überprüfen Sie Ihre routes.php Datei die route-Gruppe so auf:
Update: Seit 5.2.27 Die
RouteServiceProvider
jetzt setzt alle Ihre Routen inroutes.php
in eine route-Gruppe, hat dieweb
middleware angewandt für Sie.In der Version 5.2 : Sie bewegen sich Weg in:
Haben zwei Möglichkeit zur Verwendung von Token in form (https://laravel.com/docs/master/routing#csrf-protection):
Oder
verwenden
statt
Stellen Sie sicher, dass session-Pfad beschreibbar ist. Wenn nicht, laravel vergleicht null (keine session-token) mit $_POST['_token'] - Wert und wirft Fehler trotz der wirkliche Grund.
'files' => storage_path('framework/sessions'),
imconfig/sessions.php
DateiNur incase jemand ist immer noch zu schlagen, dieses Problem,
innen config/session.php meine Sitzungen im wesentlichen nicht arbeiten (obwohl Sie schien in Ordnung für eine Weile)
Stellen Sie sicher, dass die " domain' variable null!
Festen alles für mich, als keines der anderen Dinge, wo eigentlich mein Problem.
Hoffe, es hilft jemand.
Bearbeiten VerifyCsrfToken.php von Middleware-Ordner, um diese
Ich habe das gleiche Problem wie du, ich bin auf Laravel 5.2, ich habe auch ein token-Feld auf meinem Formular aber trotzdem wirft mir den Fehler "TokenMismatch" sehr ärgerlich, richtig?
Ich denke, das ist ein ganz tiefes problem, denn es kann viele Ursachen dafür.
Für mich, ich war ein Upgrade von Laravel 5.1 auf 5.2. Ich bin auch mit der Datenbank zum speichern meiner sessions.
Es war mir dieser Fehler, aber wenn ich überprüft die laravel Fehler-logs (/storage/logs) habe ich festgestellt, dass Laravel 5.2 erwartet, dass die session-Tabelle zu haben, user_id, IP-Adresse und user_agent Felder. Mir nicht. Wenn ich diese Felder, es hat alles die gleiche wie vor dem upgrade.
Also, mein Rat ist, überprüfen Sie das Fehlerprotokoll!
Ist diese Antwort für alle Menschen, die bereits verwendet haben
{{ csrf_field() }}
nach der
<form>
tag in Ihremview.blade.php
Datei und führen auch diephp artisan key:generate
Befehl aber immer noch die Token-Mismatch-Fehler. Dies sind die Schritte, die ich nahm, um zu beheben, die TokenMismatchException Fehler für eines meiner Projekte, der war noch in der Entwicklung.Löschen cache-Dateien aus dem folgenden Ordner innerhalb eurer laravel Projekt:
Nach dem entfernen der cache-Dateien, löschen Sie Ihren browser-cache.
Vielleicht können Sie diese verwenden : (src = https://laravel.com/docs/5.2/routing)
{{ csrf_field() }}
zu drucken, die ganzen versteckten_token
Eingang sowieIch kann das problem bestätigen, sowohl csrf_token() und csrf_field() erzeugen leeren token Felder in Laravel 5.2. Laut der docs, beide Methoden sollten immer noch funktionieren, aber Sie scheinen nicht zu tun. Meine installation ist ganz frisch, also entweder ist die Doku falsch oder ist das ein bug vorhanden ist.
Könnte man nur dieses verwenden:
Ich habe eine gleiche problem. Ich habe nicht gefunden, wie man ein core-problem, aber ich denke, dass dies ist ein gutes Update:
Laravel 5.x: Umleiten von CSRF-Fehler zur Vorherigen Seite
Also anstatt zu werfen
TokenMismatchException
redirect
Benutzer zur vorherigen Seite mit Fehlermeldung.Um es zu tun
override
VerifyCsrfToken.($request, Closure $next)
- Methode.Öffnen
App\Http\Middleware\VerifyCsrfToken.php
und habe Basisklasse(Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
) und kopieren Sie die handle-Methode innerhalbApp\Http\Middleware\VerifyCsrfToken.php
und ändern Sie Zeile wirftTokenMismatchException
zur Weiterleitung auf Vorherige Seite. auch hinzufügen, importierenuse Closure;
. So, nachdem alle änderungenApp\Http\Middleware\VerifyCsrfToken.php
Aussehen wird:Lösung 2 ist die Verwendung Koffein Für Laravel.
Koffein Für Laravel ist ein Paket entwickelt, um zu verhindern, dass Benutzer CSRF-token vom timing out auf Ihrer Website, während Sie ein Formular ausfüllen.
Mike, der Paket-Ersteller, wollte einen sicheren Weg, um das Leben einfacher für die Benutzer, die Ihre Zeit mit dem ausfüllen von Formularen, indem das token wach durch einen Blick hinter die kulissen ajax-call.
Hatte ich dasselbe problem. Gelöst wird es durch das löschen aller Dateien in Sitzungen Ordner.
Der Weg der sessions-Ordner ist: yourApplication/storage/framework/Sitzungen/
Nicht überprüfen Sie die Sicherheit auf diesem Formular muss der Dateipfad: config/auth.php auf Laravel. In dieser Datei sollten Sie finden (oder erstellen) Sie die Zeile
'no_csrf' => array(),
Dieser Zeile fügen Sie die Routen, die Sicherheit kann nicht verifiziert werden. In dieser Anordnung müssen Sie den Pfad zu Ihrer form, wie zum Beispiel:Mein Vorschlag ist, verwenden Sie
FormHelper
undForm::open()
in Ihrem Blick. Fomr und HTML-Helfer wurden entfernt laravels core in der version 5.0, aber Sie können installieren Sie erneut Folgendes diese Anweisungen.Sowieso, es ist ein Schreibfehler in Ihrer Ansicht. Das richtige Feld name ist
_token
und nicht_Token
. Vielleicht ist das das problem