Contenido del curso

Proteger rutas de API con Sanctum

Resumen

La autorización en Laravel define quién puede usar tu API y quién no. Aquí aprendes a instalar Sanctum, proteger rutas con middleware y generar tokens para que cada usuario acceda solo a lo que le corresponde, ideal si construyes proyectos backend con autenticación basada en tokens.

Qué es la autorización en una API y por qué importa

La autorización es el paso donde el sistema verifica tu identidad antes de permitirte usar funciones específicas. En el proyecto de recetas, este paso garantiza que cada receta tenga un dueño real y que nadie acceda a datos sin estar registrado.

¿Qué es la autorización en Laravel? Es el proceso que valida si un usuario registrado puede ejecutar acciones en la API. Sin un token válido, las rutas protegidas devuelven error y bloquean el acceso.

El flujo que sigues es claro: una ruta recibe la petición, pasa al controlador, se ejecuta un proceso y vuelve una respuesta. La autorización añade un filtro previo en el middleware.

Cómo instalar Sanctum y agrupar rutas protegidas

Para habilitar la emisión de tokens en Laravel, instalas el paquete Sanctum desde el proveedor oficial usando Composer en la terminal. Una vez instalado, el sistema queda listo para validar tokens en cada petición entrante.

Después agrupas las rutas que quieres proteger dentro de un bloque que exige autenticación. La estructura usa el middleware auth:sanctum y una función que contiene todas las rutas privadas, lo que evita repetir código y centraliza la seguridad.

php Route::middleware('auth:sanctum')->group(function () { Route::get('categories', [CategoryController::class, 'index']); // resto de rutas protegidas });

Si intentas acceder a categories sin token, la API te bloquea. Para leer el mensaje correcto en Postman, activas la cabecera Accept: application/json, así Laravel responde en formato JSON en vez de redirigir a una vista.

Cómo generar un token con Tinker en Laravel

Laravel incluye una herramienta nativa llamada Tinker que te permite interactuar con el proyecto desde la terminal. La ejecutas con php artisan tinker y desde ahí creas tokens para usuarios existentes en tu base de datos.

El flujo es directo:

  • Recuperas un usuario con $user = App\Models\User::find(5);.
  • Generas el token con $user->createToken('App');.
  • Copias el plain text token que devuelve el comando.
  • Lo pegas en Postman dentro de la pestaña Authorization eligiendo el tipo Bearer Token.

¿Para qué sirve Tinker? Es una consola interactiva que ejecuta código Laravel en tiempo real. La usas para crear tokens, consultar modelos o probar lógica sin pasar por el navegador.

El parámetro que pasas a createToken (en este caso App) es solo un nombre de referencia que identifica el dispositivo de conexión. Puedes usar etiquetas como Android, iPhone o Web para distinguir desde dónde se conecta cada usuario.

Por qué un usuario puede tener varios tokens

Un mismo usuario puede instalar tu aplicación en distintos dispositivos. Por eso Laravel permite generar múltiples tokens por cuenta, cada uno asociado al nombre que le diste al crearlo. Así controlas sesiones por dispositivo sin mezclarlas.

En la tabla personal_access_tokens ves dos campos clave: la columna name que guarda la referencia del dispositivo, y el campo del token original. El valor en plain text es el único que sirve para autenticarte desde el cliente.

Cómo eliminar tokens y validar que el sistema funciona

Si un token deja de ser válido o quieres cerrar sesión en un dispositivo, lo eliminas desde Tinker recuperando los tokens del usuario y borrándolos. Cuando el resultado es cero, confirmas que ya no existen en la base de datos.

php $user->tokens()->delete();

Después de borrar, aunque uses un token aparentemente correcto, la API rechaza la petición porque ese registro ya no existe. Esto demuestra que la prueba de identidad depende de la coincidencia entre el token enviado y los registros activos en tu base de datos.

¿Qué pasa si el token no existe en la base de datos? La API devuelve un error de autenticación aunque el formato del token sea válido. Sanctum compara cada petición contra la tabla de tokens y bloquea cualquier acceso no registrado.

Con esto cierras la primera capa de seguridad del proyecto. El siguiente paso es construir una ruta de login que emita el token automáticamente, sin depender de la terminal. Cuéntame en los comentarios desde qué dispositivo estás probando tu API y qué nombre le pondrías a tu token.