Gilberto Pérez Garrido
recuerden hacer esto para que reconozca a sanctum en las rutas
php artisan route:cache && php artisan cache:clear
tinker:
$user = App\Models\User::find(5);
$user->createToken('app');
William Villegas
asi es
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:
$user = App\Models\User::find(5);.$user->createToken('App');.¿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.
Gilberto Pérez Garrido
recuerden hacer esto para que reconozca a sanctum en las rutas
php artisan route:cache && php artisan cache:clear
tinker:
$user = App\Models\User::find(5);
$user->createToken('app');
William Villegas
asi es
Luis Elicané Tiu Paz
Las tablas para los registros del token en BD se generan con la instalación de los paquetes?
Marco Daniel De La Torre Mendia
No me deja crear el token por que no existen las tablas correspondientes de sanctum, y al migrar me sale que no hay nada que migrar, cómo le hago?
Mario Zamora
Si estás trabajando con Laravel 11, simplemente ejecuta este comando para asegurarte de que Sanctum está instalado:
php artisan install:api
Este comando instala y configura automáticamente Laravel Sanctum para manejar autenticación basada en tokens.
y despues ejecuta:
php artisan migrate
Para Laravel 10 o versiones anteriores ejecuta estos comandos:
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Por ultimo, después de instalar Sanctum, necesitas modificar el modelo User.php para que pueda generar y manejar los tokens en la base de datos.
por ejemplo:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable{
use HasApiTokens, HasFactory, Notifiable;
}
y por si acaso nada de esto funciona, pues podrías ejecutar de nuevo las migraciones con:
php artisan migrate:fresh --seed
o en su caso borrar la base de datos y correr las migraciones y los seeders de nuevo.
Espero que estas sugerencias te haya servido.
Mario Zamora
Por si acaso aquí dejo la documentación:
Fredy Max Chavez Loyola
buenisimo, grande como siempre