PHP Academy · Lección

Autenticación con Laravel Sanctum

Emita y valide tokens de API con Sanctum para clientes SPA y móviles.

Lección 3 de 413 pasos

Autenticación con Laravel Sanctum es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué es Sanctum?

Laravel Sanctum proporciona un sistema sencillo de autenticación basada en tokens para SPA y clientes móviles. Admite tanto tokens de API como autenticación basada en sesiones para SPA propias.

Instalar Sanctum

Instale y configure Sanctum.

$ composer require laravel/sanctum
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrate

Emitir tokens

Genere un token de acceso personal para un usuario después de verificar sus credenciales.

<?php
Route::post("/login", function (Request $request) {
    $request->validate(["email" => "required", "password" => "required"]);
    $user = User::where("email", $request->email)->first();
    if (!$user || !Hash::check($request->password, $user->password)) {
        throw ValidationException::withMessages([
            "email" => ["The provided credentials are incorrect."],
        ]);
    }
    $token = $user->createToken("mobile-app")->plainTextToken;
    return response()->json(["token" => $token]);
});

Trait HasApiTokens

Añada el trait HasApiTokens a su modelo User para activar la gestión de tokens.

<?php
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
}

Proteger rutas

Utilice el middleware auth:sanctum para proteger las rutas de API.

<?php
// routes/api.php
Route::middleware("auth:sanctum")->group(function () {
    Route::get("/user",  fn(Request $r) => $r->user());
    Route::apiResource("posts", PostController::class);
});

Enviar el token

Los clientes envían el token en el encabezado Authorization como un token Bearer.

# HTTP header:
Authorization: Bearer 1|AbCdEf1234567890...

Ámbitos de tokens (capacidades)

Asigne capacidades a los tokens para restringir las acciones que pueden realizar.

<?php
// Create token with abilities:
$token = $user->createToken("mobile", ["read:posts", "write:comments"])->plainTextToken;

// Check ability:
if ($user->tokenCan("write:comments")) {
    // allowed
}

Revocar tokens

Elimine un token específico o todos los tokens (cierre la sesión en todos los dispositivos).

<?php
// Revoke current token (logout):
$request->user()->currentAccessToken()->delete();

// Revoke all tokens (logout everywhere):
$request->user()->tokens()->delete();

Expiración de tokens

Establezca la expiración de los tokens en config/sanctum.php. Los tokens se comprueban con last_used_at y el período de expiración.

// config/sanctum.php
"expiration" => 60 * 24 * 7, // 7 days in minutes

Autenticación de SPA

Para SPA del mismo dominio, Sanctum puede utilizar autenticación basada en sesiones en lugar de tokens. Llame primero a /sanctum/csrf-cookie y, después, utilice el inicio de sesión normal.

Sanctum frente a Passport

Sanctum: tokens de API sencillos y autenticación de SPA. Passport: servidor OAuth2 completo con códigos de autorización, credenciales de cliente y tokens de actualización. Comience con Sanctum y pase a Passport solo si necesita OAuth2.

Resumen

Sanctum emite tokens Bearer para la autenticación de API. Añada HasApiTokens al modelo User. Proteja las rutas con auth:sanctum. Revoque los tokens al cerrar sesión. Utilice capacidades para delimitar los permisos.

Comprobación rápida

¿Cómo incluye un cliente un token de Sanctum en las solicitudes de API?

Gratis para empezar

Aprende PHP con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
49
Lecciones
195

Preguntas frecuentes

¿La lección «Autenticación con Laravel Sanctum» es gratis?

Sí — el texto completo de «Autenticación con Laravel Sanctum» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Autenticación con Laravel Sanctum»?

Emita y valide tokens de API con Sanctum para clientes SPA y móviles. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Autenticación con Laravel Sanctum»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Rutas de API y controladores de recursos
  2. Recursos de API y respuestas JSON
  3. Autenticación con Laravel Sanctum
  4. Limitación de solicitudes y versionado de API
← Volver a PHP Academy