Solución para restringir el acceso por web en una API en Laravel.

lucasgio

Iosvany Alvarez

Posted on September 9, 2021

Solución para restringir el acceso por web en una API en Laravel.

Cuando creamos una API en Laravel queremos que nuestra aplicación solo sea accedida mediante peticiones HTTP con formato JSON.

Una de las tantas vias que existe es el manejo de excepciones mediante el fichero Handler de nuestro proyecto de Laravel.Tiene un método register(), donde cambiaremos par de lineas de como viene por default cuando se crea la aplicación laravel.

Imagen de un codigo

Pero esta vía no creo que sea la más completa para tratar todos los posibles errores o excepciones, pero funciona.

Ahora le quiero mostrar otra opción y es mediante la creación de un middleware que nos va a evualar las peticiones HTTP,pero lo configuraremos de manera global para que todas las peticiones que se realicen hacia nuestra API cumplan con los requisistos establecidos.

En la imagen de abajo se observa el código del middleware y la configuración que he usado para hacerlo de manera global.

class JsonMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if (!$request->wantsJson()) 
        {
            return response()->json([
                'success'=> 'false',
                'message' => 'Do not have authorization'
            ], 404);   
        }

        return $next($request);
    }
}

Enter fullscreen mode Exit fullscreen mode

Imagen de un codigo

Aqui vamos analizar que las peticiones que se hagan, sino vienen en formato JSON devolveran una respuesta. Para eso nos apoyamos en el metodo wantsJson que devuelve un valor booleano si el request no viene en formato requerido.

Aquí las imagenes de los resultados tanto de un navegador como del cliente HTTP Postman, de las peticiones hechas después de haber configurado nuestro middleware de manera global. Las mismas no cumplen con los requisitos y nuestra API retorna una respuesta con el error.
Imagen de un codigo
Imagen de un codigo

💖 💪 🙅 🚩
lucasgio
Iosvany Alvarez

Posted on September 9, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related