Cita de la doc de Sanctum: Sanctum also exists to provide a simple method of authenticating single page applications (SPAs) that need to communicate with a Laravel powered API. These SPAs might exist in the same repository as your Laravel application or might be an entirely separate repository.
Este texto explica el segundo propósito fundamental de Laravel Sanctum, más allá de la autenticación de APIs con tokens para aplicaciones móviles o de terceros.
Básicamente, dice:
"Sanctum también existe para proporcionar un método simple de autenticación para aplicaciones de una sola página (SPAs) que necesitan comunicarse con una API impulsada por Laravel. Estas SPAs pueden existir en el mismo repositorio1 que tu aplicación Laravel o pueden ser un repositorio completamente2 separado."
Vamos a desglosarlo:
-
"Sanctum también existe para proporcionar un método simple de autenticación para aplicaciones de una sola página (SPAs)...":
- Aquí se refiere a SPAs como React, Vue, Angular, Svelte, etc. Estas son aplicaciones frontend que se ejecutan en el navegador y que a menudo necesitan interactuar con una API para obtener y enviar datos.
- La clave es "método simple de autenticación". Sanctum busca simplificar un problema común: cómo autenticar a los usuarios en una SPA cuando la API de backend es Laravel.
-
"...que necesitan comunicarse con una API impulsada por Laravel.":
- Reafirma que el backend es una API construida con Laravel. La SPA no renderiza páginas directamente desde Laravel, sino que hace solicitudes HTTP (GET, POST, PUT, DELETE) a los endpoints de la API para interactuar con los datos.
-
"Estas SPAs pueden existir en el mismo repositorio que tu aplicación Laravel o pueden ser un repositorio completamente separado.":
3 - Este punto es crucial y destaca la flexibilidad de Sanctum.
- "Mismo repositorio": Imagina que tienes un proyecto Laravel donde la carpeta
resources/js
contiene tu aplicación Vue o React completa, y usas Vite o Laravel Mix para compilarla. En este caso, el frontend y el backend viven en el mismo "lugar" en tu sistema de archivos y suelen desplegarse juntos. Aunque estén en el mismo repositorio, a nivel de ejecución, el frontend (servido por un servidor web, a veces el mismo que Laravel) y la API (el propio Laravel) se comunican como entidades separadas. - "Repositorio completamente separado": Este es un escenario muy común. Tienes un repositorio (
repo-frontend
) para tu aplicación React/Vue/Angular y otro repositorio (repo-backend
) para tu API de Laravel. Se desarrollan y despliegan de forma independiente. Por ejemplo, tu SPA podría estar desplegada en Netlify y tu API de Laravel en un servidor VPS.
¿Por qué es importante esta funcionalidad en Sanctum?
Tradicionalmente, las SPAs que se comunican con APIs de backend tenían que usar métodos de autenticación sin estado (stateless) como JWT (JSON Web Tokens) o OAuth2 (Laravel Passport). Si bien son válidos, pueden añadir complejidad.
Sanctum ofrece una alternativa más sencilla y familiar, especialmente cuando tu SPA y tu API están en "dominios de primera parte" (ej. app.tuapp.com
y api.tuapp.com
). En este escenario, Sanctum aprovecha las cookies de sesión y la protección CSRF de Laravel, que ya conoces de las aplicaciones web tradicionales, pero optimizadas para el flujo de una SPA. Esto significa:
- No necesitas gestionar manualmente tokens de API en el lado del cliente después del login inicial para cada solicitud. El navegador se encarga de enviar las cookies de sesión automáticamente.
- Mayor seguridad inherente por el uso de la protección CSRF.
- Configuración más simple en comparación con soluciones OAuth2 completas para este caso de uso específico.
En resumen, este texto subraya que Sanctum no solo es para APIs expuestas a servicios de terceros o móviles, sino que es una solución elegante y ligera para integrar la autenticación en tus aplicaciones frontend de una sola página, sin importar si comparten el mismo repositorio de código con tu backend de Laravel o no.
No hay comentarios:
Publicar un comentario