¿Qué es la autenticación?
La autenticación consiste en verificar “quién es” el usuario que accede. En una aplicación web, un formulario de login recibe correo y contraseña y, si son correctos, guarda la información del usuario en la sesión. En las siguientes solicitudes se identifica al usuario consultando esa sesión. La autenticación en Laravel se compone de dos conceptos: “guards” y “providers”.- Guard: define cómo autenticar al usuario en cada solicitud. Por defecto se usa el guard
session, que gestiona el estado con sesión y cookies. - Provider: define cómo obtener al usuario desde la base de datos. Por defecto usa Eloquent.
El archivo de configuración de autenticación es
config/auth.php. Con la configuración por defecto es suficiente para la mayoría de aplicaciones web.Autenticación con starter kit
En Laravel, con solo elegir un starter kit al crear la aplicación conlaravel new, se generan automáticamente las funciones de login, registro, restablecimiento de contraseña, etc. Es el método más recomendado.
Crear la aplicación
Crea la aplicación con el instalador de Laravel. Durante el proceso aparece un prompt para elegir el starter kit.Puedes elegir entre React, Vue, Livewire y Svelte como starter kits.
Elige según la pila técnica de tu equipo.
Preparar la base de datos
Después de comprobar la configuración de base de datos en Se aplica la migración inicial que incluye la tabla
.env, ejecuta las migraciones.users.| Funcionalidad | URL |
|---|---|
| Registro de usuario | /register |
| Inicio de sesión | /login |
| Restablecimiento de contraseña | /forgot-password |
| Verificación de correo | /email/verify |
| Edición del perfil | /settings/profile |
Starter kits disponibles
React
Con React 19, TypeScript, Tailwind y shadcn/ui puedes crear una SPA moderna. Gracias a Inertia puedes usar React en el frontend manteniendo el enrutamiento del lado del servidor.Vue
Adopta la Composition API de Vue, TypeScript, Tailwind y shadcn-vue. Igual que React, se integra con el servidor mediante Inertia.Livewire
Utiliza Livewire, que permite construir UIs dinámicas solo con PHP. Ideal para equipos centrados en plantillas Blade o que no quieran usar un framework JavaScript. Incluye la librería de componentes Flux UI.Svelte
Utiliza Svelte 5, TypeScript, Tailwind y shadcn-svelte. Combinado con Inertia permite construir una SPA moderna.Fachada Auth
Con la fachadaAuth puedes obtener la información del usuario autenticado y comprobar el estado de autenticación.
Obtener el usuario autenticado
Request.
Comprobar el estado de autenticación
Auth::check() devuelve true o false según si el usuario ha iniciado sesión.
@auth y @guest.
Protección de rutas
Para crear rutas accesibles solo a usuarios autenticados, usa el middlewareauth.
/login.
Para proteger varias rutas de una vez, usa un grupo.
Rutas solo para invitados
Para redirigir a los usuarios autenticados usa el middlewareguest.
Aplicándolo a las páginas de login y registro, los usuarios que ya han iniciado sesión se envían al dashboard.
Autenticación manual
Para implementar el login manualmente sin usar un starter kit, usaAuth::attempt().
Auth::attempt().
La contraseña se compara automáticamente con el hash guardado, así que pásala en texto plano.
Para implementar la función “recordarme”, pasa true como segundo argumento.
Aunque implementes la autenticación manualmente, es recomendable inspirarse en el código del starter kit como referencia para una implementación segura.
Cierre de sesión
Para cerrar la sesión del usuario, llama aAuth::logout().
La buena práctica es invalidar la sesión y regenerar el token CSRF al mismo tiempo.
Resumen
| Objetivo | Método |
|---|---|
| Añadir autenticación rápidamente | Starter kit (laravel new) |
| Obtener el usuario actual | Auth::user() / $request->user() |
| Comprobar si hay sesión iniciada | Auth::check() |
| Proteger una ruta | ->middleware('auth') |
| Iniciar sesión manualmente | Auth::attempt($credentials) |
| Cerrar sesión | Auth::logout() |
Próximos pasos
Middleware
Aprende en detalle el funcionamiento del middleware
auth y cómo crear middlewares propios.