Solucionar problemas con CSRF token o VerifyCsrfToken en Laravel

Hoy vamos a aprender a solucionar y evitar cualquier problema con «CSRF token» o» VerifyCsrfToken» en Laravel.

Laravel tiene una capa extra de seguridad para los formularios y la peticiones http para proteger nuestro proyecto de ataques CSRF, etc. Esto a veces es necesario usarlo y otras veces no, y mucha gente suele tener problemas con el CSRF a la hora de desarrollar un api rest o un proyecto web completo con Laravel 5 o 6.

Para solucionar estos problemas tenemos varias opciones.

Primera Solución a CSRF Token

Esta opción es la ideal si estás haciendo un API RESTful con Laravel ya que en este tipo de proyectos no estamos enviando formularios directamente como en un proyecto monolitico completo, simplemente estamos haciendo peticiones http al API, pero no directamente desde un formulario.

Lo que tienes que hacer para arreglar el problema con CSRF Token es entrar al fichero app/Http/Kernel.php y comentar esta linea:

\App\Http\Middleware\VerifyCsrfToken::class,

Otras opciones para formularios

Las otras formas de evitar estos fallos y que esté todo perfecto, en este caso en un proyecto completo, en el que tenemos formularios de Laravel en nuestras vistas de Blade serian:

Paso 1. Decomenta la linea \App\Http\Middleware\VerifyCsrfToken::class, si es que la tienes comentada y añade esto al formulario, en la primera linea despues de abrir el form:

{‌{ csrf_field() }}

Si eso no te funciona, quitalo y añade esto:

{‌!! csrf_field() !!}

Y si te sigue sin funcionar y te sigue dando fallo prueba con esto en tu formulario:

@csrf

Y si no te funciona ninguna de estas opciones comenta la linea que te he dicho anteriormente y no imprimas ningún campo csrf.

Con esto ya sabemos solucionar los posibles problemas, fallos y errores relacionados con CSRF en Laravel 🙂

Muchas gracias, nos vemos en el próximo articulo de este blog 🙂

Victor

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *