Antes de leer a continuación, asegúrese de tener @csrf
o {{ csrf_field() }}
en su forma
como
<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>
Aparece el mensaje de error Session Expired o 419 Page Expired en larvel porque en algún lugar falla la verificación del token csrf, lo que significa que el App\Http\Middleware\VerifyCsrfToken::class
middleware ya está encendido. En la forma en que @csrf
ya se agregó la directiva Blade, lo que también debería estar bien.
Entonces, la otra área a verificar es la sesión. La csrf
verificación del token está directamente relacionada con su sesión, por lo que es posible que desee verificar si el controlador de su sesión está funcionando o no, por ejemplo, un Redis configurado incorrectamente podría causar un problema.
Tal vez pueda intentar cambiar su controlador / software de sesión desde su .env
archivo, los controladores compatibles se proporcionan a continuación
Controladores de sesión compatibles en Laravel 5, Laravel 6 y Laravel 7 (Doc Link)
file
- las sesiones se almacenan en almacenamiento / marco / sesiones.
cookie
- las sesiones se almacenan en cookies seguras y cifradas.
database
- las sesiones se almacenan en una base de datos relacional.
memcached
/ redis
- las sesiones se almacenan en uno de estos almacenes rápidos basados en caché.
array
- las sesiones se almacenan en una matriz PHP y no se conservarán.
Si su formulario funciona después de cambiar el controlador de sesión, entonces algo está mal con ese controlador en particular, intente corregir el error desde allí.
Posibles escenarios propensos a errores
Es posible que las sesiones basadas en archivos no funcionen debido a los problemas de permisos con el /storage
directorio (una búsqueda rápida en Google te traerá la solución), también recuerda que poner 777 para el directorio nunca es la solución.
En el caso del controlador de la base de datos, es posible que su conexión de base de datos sea incorrecta, o que la sessions
tabla no exista o esté mal configurada (se confirmó que la parte de configuración incorrecta es un problema según el comentario de @Junaid Qadir).
redis/memcached
La configuración es incorrecta o está siendo manipulada por algún otro código en el sistema al mismo tiempo.
Puede ser una buena idea ejecutar php artisan key:generate
y generar una nueva clave de aplicación que, a su vez, eliminará los datos de la sesión.
Clear Browser Cache HARD , encontré que Chrome y Firefox son los culpables más de lo que puedo recordar.
Obtenga más información sobre por qué son importantes las claves de la aplicación
return;
puede llamarreturn redirect()->back();
. Por lo que puedo ver, la aplicación no tiene nada que hacer después de la solicitud de publicación. Tal vez pueda redirigirlo a una vista después de procesar la solicitud.