Przed przeczytaniem poniżej upewnij się, @csrf
czy {{ csrf_field() }}
w swojej formie
jak
<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>
W larvel pojawia się komunikat o błędzie Session Expired lub 419 Page Expired, ponieważ gdzieś weryfikacja tokenu csrf kończy się niepowodzeniem, co oznacza, że App\Http\Middleware\VerifyCsrfToken::class
oprogramowanie pośredniczące jest już włączone. W formie @csrf
dyrektywa ostrza została już dodana, co również powinno być w porządku.
Następnie kolejnym obszarem do sprawdzenia jest sesja. csrf
Weryfikacja tokena jest bezpośrednio związany z sesją, więc warto sprawdzić, czy kierowca sesja działa, czy nie, taki jak niepoprawnie skonfigurowanego Redis może powodować problem.
Może możesz spróbować zmienić sterownik / oprogramowanie sesji z .env
pliku, obsługiwane sterowniki są podane poniżej
Obsługiwane sterowniki sesji w Laravel 5, Laravel 6 i Laravel 7 (Doc Link)
file
- sesje są przechowywane w pamięci / ramach / sesjach.
cookie
- sesje są przechowywane w bezpiecznych, zaszyfrowanych plikach cookie.
database
- sesje są przechowywane w relacyjnej bazie danych.
memcached
/ redis
- sesje są przechowywane w jednym z tych szybkich sklepów opartych na pamięci podręcznej.
array
- sesje są przechowywane w tablicy PHP i nie będą utrwalane.
Jeśli twój formularz działa po przełączeniu sterownika sesji, oznacza to, że coś jest nie tak z tym konkretnym sterownikiem, spróbuj naprawić błąd z tego miejsca.
Możliwe scenariusze podatne na błędy
Prawdopodobnie sesje oparte na plikach mogą nie działać z powodu problemów z uprawnieniami do /storage
katalogu (szybkie wyszukiwanie w Google przyniesie Ci rozwiązanie), pamiętaj również, że umieszczenie 777 dla katalogu nigdy nie jest rozwiązaniem.
W przypadku sterownika bazy danych połączenie z bazą danych może być nieprawidłowe lub sessions
tabela może nie istnieć lub być nieprawidłowo skonfigurowana (potwierdzono, że błędna część konfiguracji jest problemem zgodnie z komentarzem @Junaid Qadir).
redis/memcached
konfiguracja jest nieprawidłowa lub jest manipulowana przez inny fragment kodu w systemie w tym samym czasie.
Dobrym pomysłem może być wykonanie php artisan key:generate
i wygenerowanie nowego klucza aplikacji, który z kolei opróżni dane sesji.
Wyczyść pamięć podręczną przeglądarki TRUDNE. Uważam, że Chrome i Firefox są winowajcami bardziej, niż pamiętam.
Przeczytaj więcej o tym, dlaczego klucze aplikacji są ważne
return;
ciebie możesz zadzwonićreturn redirect()->back();
. Z tego, co widzę, aplikacja nie ma nic do zrobienia po wysłaniu żądania. Może po przetworzeniu żądania możesz przekierować go do widoku.