Carlos Eduardo Gomez García
Yo no sé ustedes pero a mi me encanta el logo de Laravel Sacntum, jaja
Mariano Gastón Paduani
Gracias!
¿Cómo proteger una API mediante inicio de sesión y autenticación?
Proteger una API es crucial para garantizar que solo los usuarios autorizados accedan a los datos. En esta clase, seguiremos un enfoque detallado para permitir que los usuarios se autentiquen y obtengan un token, asegurando así el acceso a nuestras API privadas. Vamos a usar herramientas específicas y configuraciones para asegurarnos de que solo los usuarios autenticados puedan consumir la información.
¿Qué pasos iniciales seguimos en el editor?
Primero, abrimos nuestro terminal en el editor. Desde aquí, realizamos la instalación de un componente que nos permitirá configurar la autenticación adecuada para la API. Si hubiéramos tenido instalado JetStream desde el inicio, muchas de estas configuraciones serían automáticas, pero aquí mostramos el proceso paso a paso. Este enfoque es esencial para comprender cómo se configuran estas protecciones de manera manual.
¿Cómo configuramos las rutas para la autenticación?
El siguiente paso implica proteger nuestras rutas en el archivo de configuración. Específicamente, trabajaremos con las versiones uno y dos de nuestra API al aplicar middleware para autenticación. El middleware se configura de la siguiente manera:
$middleware = 'auth:sanctum'; // Ejemplo de cómo se define el middleware para autenticación
La instalación que estamos llevando a cabo trae muchas configuraciones predeterminadas, y utilizaremos esto para definir nuestras rutas protegidas.
¿Cómo probamos la configuración usando Postman?
Una vez que la instalación termina, ejecutamos una migración necesaria con el comando de Artisan:
php artisan migrate
Este paso asegura que las tablas necesarias para manejar tokens se creen en la base de datos. Al intentar acceder a un recurso protegido usando Postman, es probable que inicialmente veamos un error de redirección hacia LogIn.
Esto sucede porque la solicitud, por defecto, se interpreta como hecha desde un navegador web. Para evitar esto, agregamos un encabezado clave: Accept, con el valor application/json:
Accept: application/json
Esto indica al servidor que la solicitud es hecha por un cliente API y no por un navegador.
¿Qué errores podemos esperar encontrar y cómo los solucionamos?
Al enviar una solicitud sin el encabezado adecuado, recibimos un error 401, indicando que no estamos autenticados. Este código de estado es correcto y esperado, ya que nuestras rutas están bien protegidas.
Este proceso subraya la importancia de comprender la configuración de encabezados al realizar solicitudes a una API. Si no te has autenticado, el sistema impedirá el acceso a los datos. Solo necesitas agregar una línea para asegurar que las solicitudes se manejen correctamente como API.
Recuerda siempre realizar estos ejercicios y asegurarte de que cada parte esté bien configurada antes de avanzar a tareas más complejas como la implementación de sistemas de login. ¡A seguir aprendiendo!
Carlos Eduardo Gomez García
Yo no sé ustedes pero a mi me encanta el logo de Laravel Sacntum, jaja
Mariano Gastón Paduani
Gracias!
Mariano Gastón Paduani
Laravel 8 trae por defecto Sanctum y no hace falta instalarlo
KEVIN BRAYAN LUNA FIGUEROA
Me pueden apoyar para saber cual es la diferencia entre Laravel Sanctum y Laravel Passport?
Jorge Eliecer Navia Torres
Con este codigo podemos agrupar ambas rutas bajo un mismo middleware
Route::middleware('auth:sanctum')->group(function () { Route::apiResource('v1/posts', PostV1::class); Route::apiResource('v2/posts', PostV2::class); });
Mariano Gastón Paduani
Gracias!
IRIDIAN GUADALUPE CARRERA MONDRAGÓN
wooow laravel es genial :D
Mariano Gastón Paduani
Recordar agregar el Header "Accept" "application/json" para consumir la API desde Postman o similar
Juan Guillermo Perez Cardozo
italo como saber cuando usar sactum o cuando passport ?
Italo Morales Fantone
ProfesorSanctum se basa en API tokens y Passport usa OAuth2. La diferencia es esa, el modo de acceso a la información privada.
Daniel Antonio
En laravel 10.x toda esta configuración ya está configurada desde la creación del proyecto no es necesario hacer la instalació, ni las migración.
Pablo Emilio Escobar Ossa
¿Hay alguna forma de hacer estas autenticaciones con otra tabla que no sea Usuarios?
Si quiero tener una tabla no sé de Clientes, o de sistemas, ¿Cómo puedo autenticar estos clientes so sistemas sin necesidad de crearlos como usuarios?
Italo Morales Fantone
ProfesorEs posible alterar cualquier cosa del Framework, en ese caso debes modificar muchos elementos de configuración.
Cristian Andres Espinel Londoño
Cuando intento realizar el paso de migrate me sale esto
PS C:\xampp\htdocs\api> php artisan migrate INFO Nothing to migrate.
Julian Andres Guzman
Ey cristian!, a partir de la v8 o superior ya esto se instala automaticamente desde que ejecutas por primera ves "php artisan migrate"
David Martínez López
Tienes que publicar los recursos del paquete con el siguiente comando:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Kevin Giovanni Cano Blanco
Estoy con laravel 10 y si instalas Breeze ya lo trae
Julian Andres Guzman
Y como menciono el profe, tambien con jetstream que es un mucho mas completo que Breeze
Kevin Giovanni Cano Blanco
Continuo: El sanctum xd
Pd: ¿a alguien mas le gusta la palabra "Sanctum"?
Plutarco Garcia
Tengo un problema luego de realizar la instalación y seguir el curso con la introducción del middleware en el routes y correr en postman me dio estos errores no puedo avanzar quisiera me pudieran ayudar
Deprecated: Return type of Illuminate\Container\Container::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\laragon\www\api\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 1341 Deprecated: Return type of Illuminate\Container\Container::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\laragon\www\api\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 1352
Shirley Marisol Ramírez Peña
Estoy ejecutando la linea de comando >>composer require laravel/sanctum, estoy usando laravel 8, pero se sale el siguente error:
Your requirements could not be resolved to an installable set of packages.
Problem 1 - Root composer.json requires laravel/sanctum ^3.2 -> satisfiable by laravel/sanctum[v3.2.0, v3.2.1, 3.x-dev]. - laravel/sanctum[v3.2.0, ..., 3.x-dev] require illuminate/console ^9.21|^10.0 -> found illuminate/console[v9.21.0, ..., 9.x-dev, v10.0.0, ..., 10.x-dev] but these were not loaded, likely because it conflicts with another require.
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions. You can also try re-running composer require with an explicit version constraint, e.g. "composer require laravel/sanctum:*" to figure out if any version is installable, or "composer require laravel/sanctum:^2.1" if you know which you need.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
Montse Cruz
tengo una duda... estoy desarrollando el front end de un proyecto pero solo se consume una API, no hay base de datos en absoluto, todo ha ido bien pero estoy atorado en el login, no encuentro una forma para realizar el logeo sin el uso de una base de datos, hay alguna forma de hacerlo?
Rodolfo Rohatan Bassil
todas las apis deben ser privadas?
Engels Snyder Cárcamo
No necesariamente todo depende de ti si quieres proteger la información o hacerla pública. si es pública cualquiera podrá consumir la información.
Moises Jonas LLicahua Huamani
Una pregunta con respecto a Sanctum, no deseo migrar la tabla a mi base de datos y en la documentacion encontre que puedo configurar este metodo Sanctum::ignoreMigrations, podria ayudarme como hacer eso, espero su ayuda, gracias.
Mario Andrade
Hola,
Solo debes publicarlas con el siguiente código en tu terminal:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Camilo Venegas
Elvis Milan
sanctum