Prima di leggere di seguito assicurati di avere @csrf
o {{ csrf_field() }}
nella tua forma
come
<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>
Viene visualizzato il messaggio di errore Sessione scaduta o 419 Pagina scaduta in larvel perché da qualche parte la verifica del token csrf non riesce, il che significa che il App\Http\Middleware\VerifyCsrfToken::class
middleware è già attivato. Nella forma @csrf
è già stata aggiunta la direttiva blade, il che dovrebbe andare bene.
Quindi l'altra area da controllare è la sessione. La csrf
verifica del token è direttamente coinvolta nella tua sessione, quindi potresti voler controllare se il tuo driver di sessione funziona o meno, ad esempio un Redis configurato in modo errato potrebbe causare un problema.
Forse puoi provare a cambiare il tuo driver / software di sessione dal tuo .env
file, i driver supportati sono forniti di seguito
Driver di sessione supportati in Laravel 5, Laravel 6 e Laravel 7 (Doc Link)
file
- le sessioni vengono archiviate in storage / framework / sessioni.
cookie
- le sessioni vengono memorizzate in cookie protetti e crittografati.
database
- le sessioni sono archiviate in un database relazionale.
memcached
/ redis
- le sessioni sono archiviate in uno di questi veloci archivi basati sulla cache.
array
- le sessioni vengono memorizzate in un array PHP e non verranno mantenute.
Se il tuo modulo funziona dopo aver cambiato il driver della sessione, allora c'è qualcosa di sbagliato in quel particolare driver, prova a correggere l'errore da lì.
Possibili scenari soggetti a errori
Probabilmente le sessioni basate su file potrebbero non funzionare a causa dei problemi di autorizzazione con la /storage
directory (una rapida ricerca su Google ti porterà la soluzione), ricorda inoltre che mettere 777 per la directory non è mai la soluzione.
Nel caso del driver del database, la connessione al database potrebbe essere errata o la sessions
tabella potrebbe non esistere o configurata in modo errato (la parte di configurazione errata è stata confermata come un problema secondo il commento di @Junaid Qadir).
redis/memcached
la configurazione è errata o viene manipolata contemporaneamente da qualche altra parte di codice nel sistema.
Potrebbe essere una buona idea eseguire php artisan key:generate
e generare una nuova chiave dell'app che, a sua volta, svuoterà i dati della sessione.
Cancella la cache del browser HARD , ho scoperto che Chrome e Firefox sono i colpevoli più di quanto possa ricordare.
Ulteriori informazioni sul motivo per cui le chiavi dell'applicazione sono importanti
return;
te puoi chiamarereturn redirect()->back();
. Da quello che posso vedere, l'app non ha nulla a che fare dopo la richiesta del post. Forse puoi reindirizzarlo a una vista dopo aver elaborato la richiesta.