Bevor Sie unten lesen, stellen Sie sicher, dass Sie @csrf
oder {{ csrf_field() }}
in Ihrer Form
mögen
<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>
Die Fehlermeldung "Sitzung abgelaufen" oder "Seite abgelaufen" in larvel wird angezeigt, weil irgendwo die Überprüfung Ihres CSRF-Tokens fehlschlägt, was bedeutet, dass die App\Http\Middleware\VerifyCsrfToken::class
Middleware bereits aktiviert ist. In der Form ist die @csrf
Blade-Direktive bereits hinzugefügt, was ebenfalls in Ordnung sein sollte.
Der andere zu überprüfende Bereich ist die Sitzung. Die csrf
Token-Überprüfung ist direkt mit Ihrer Sitzung verbunden. Daher möchten Sie möglicherweise überprüfen, ob Ihr Sitzungstreiber funktioniert oder nicht, z. B. wenn ein falsch konfigurierter Redis ein Problem verursacht.
Möglicherweise können Sie versuchen, Ihren Sitzungstreiber / Ihre Sitzungssoftware aus Ihrer .env
Datei zu wechseln. Die unterstützten Treiber sind unten angegeben
Unterstützte Session-Treiber in Laravel 5, Laravel 6 und Laravel 7 (Doc Link)
file
- Sitzungen werden in Speicher / Framework / Sitzungen gespeichert.
cookie
- Sitzungen werden in sicheren, verschlüsselten Cookies gespeichert.
database
- Sitzungen werden in einer relationalen Datenbank gespeichert.
memcached
/ redis
- Sitzungen werden in einem dieser schnellen, Cache-basierten Speicher gespeichert.
array
- Sitzungen werden in einem PHP-Array gespeichert und nicht beibehalten.
Wenn Ihr Formular nach dem Wechseln des Sitzungstreibers funktioniert, stimmt etwas mit diesem bestimmten Treiber nicht. Versuchen Sie, den Fehler von dort aus zu beheben.
Mögliche fehleranfällige Szenarien
Wahrscheinlich funktionieren dateibasierte Sitzungen aufgrund von Berechtigungsproblemen mit dem /storage
Verzeichnis möglicherweise nicht (ein schnelles Googeln bringt Ihnen die Lösung). Denken Sie auch daran, dass 777 für das Verzeichnis niemals die Lösung ist.
Im Fall des Datenbanktreibers ist Ihre DB-Verbindung möglicherweise falsch oder die sessions
Tabelle ist möglicherweise nicht vorhanden oder falsch konfiguriert (der falsche Konfigurationsteil wurde gemäß dem Kommentar von @Junaid Qadir als Problem bestätigt).
redis/memcached
Die Konfiguration ist falsch oder wird gleichzeitig von einem anderen Code im System manipuliert.
Es ist möglicherweise eine gute Idee, php artisan key:generate
einen neuen App-Schlüssel auszuführen und zu generieren, der wiederum die Sitzungsdaten löscht.
Clear Browser Cache HARD , ich fand, dass Chrome und Firefox mehr als ich mich erinnern kann ein Schuldiger sind.
Lesen Sie mehr darüber, warum Anwendungsschlüssel wichtig sind
return;
können Sie anrufenreturn redirect()->back();
. Soweit ich sehen kann, hat die App nach der Post-Anfrage nichts mehr zu tun. Möglicherweise können Sie es nach der Verarbeitung der Anforderung in eine Ansicht umleiten.