Aprende Laravel: Autenticación

Casi toda app real necesita saber quién es el usuario: registrarlo, dejarlo iniciar sesión y proteger las rutas privadas. En Laravel 13 no tienes que construir eso a mano: los starter kits te dan login, registro, recuperación de contraseña y más, listos desde el primer minuto. Este es el mapa de la autenticación en Laravel.
La forma rápida: starter kits
La manera recomendada de arrancar una app con autenticación es elegir un starter kit al crear el proyecto. El instalador te pregunta cuál quieres:
laravel new mi-appLaravel 13 ofrece cuatro starter kits oficiales, todos con autenticación incluida:
- React (Inertia, React 19, TypeScript, Tailwind, shadcn/ui)
- Vue (Inertia, Vue 3 Composition API, TypeScript, Tailwind)
- Svelte (Inertia, Svelte 5, TypeScript, Tailwind)
- Livewire (Livewire 4, Tailwind, Flux UI) — ideal si te quedas en PHP/Blade
Después instalas el frontend y levantas el servidor:
cd mi-app
npm install && npm run build
composer run devYa tienes registro, login y logout funcionando en http://localhost:8000.
Qué incluyen (y quién lo maneja: Fortify)
Todos los starter kits usan Laravel Fortify por debajo: es el backend de autenticación que registra las rutas y la lógica. Las que trae de fábrica:
| Ruta | Método | Para qué |
|---|---|---|
/login |
GET/POST | Formulario y autenticación |
/logout |
POST | Cerrar sesión |
/register |
GET/POST | Registro de usuarios |
/forgot-password |
GET/POST | Solicitar reset de contraseña |
/reset-password |
GET/POST | Cambiar la contraseña |
/email/verify |
GET | Verificación de email |
/two-factor-challenge |
GET/POST | Verificación en dos pasos (2FA) |
Controlas qué features están activas en config/fortify.php:
use Laravel\Fortify\Features;
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
Features::twoFactorAuthentication(['confirm' => true]),
],Comenta o borra una entrada para desactivar esa feature (por ejemplo, quitar Features::registration() para cerrar el registro público). El 2FA con apps TOTP viene activado por defecto.
Proteger rutas: el middleware auth
Para que una ruta solo sea accesible con sesión iniciada, agrégale el middleware auth. Si además quieres exigir email verificado, suma verified:
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
});Quien no esté autenticado será redirigido al login automáticamente.
Acceder al usuario autenticado
Desde cualquier parte de tu app tienes al usuario actual con el helper auth() o la fachada Auth:
$user = auth()->user(); // el modelo User autenticado
$id = auth()->id(); // solo el idY en Blade, las directivas @auth y @guest muestran contenido según el estado:
@auth
Hola, {{ auth()->user()->name }}.
@endauth
@guest
<a href="/login">Iniciar sesión</a>
@endguestPersonalizar el registro
Cuando un usuario se registra, Fortify llama a clases de acción en app/Actions/Fortify. Para agregar campos (por ejemplo un teléfono), editas CreateNewUser:
public function create(array $input): User
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'max:255', 'unique:users'],
'password' => $this->passwordRules(),
])->validate();
return User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
}Fíjate que aquí también se valida (lo viste en el post de validación) y la contraseña se guarda con Hash::make(), nunca en texto plano.
¿Y si necesito login social o passkeys?
Cada starter kit tiene una variante con WorkOS AuthKit que añade autenticación social (Google, Microsoft, GitHub, Apple), passkeys, "Magic Auth" y SSO, sin que tu app maneje contraseñas. Se elige también al correr laravel new. Para la mayoría de proyectos, la autenticación estándar con Fortify es suficiente para empezar.
Siguiente Paso
Con esto completas los fundamentos: ya sabes instalar, rutear, vistas, controllers, base de datos, validación y autenticación. El siguiente salto natural es sumarle IA a tu flujo de trabajo Laravel. Sigue con IA para desarrolladores Laravel, o vuelve al índice de la serie en Aprende Laravel desde cero.
Preguntas Frecuentes
¿Cuál starter kit elijo?
Si te quedas en PHP/Blade, Livewire. Si tu frontend es JavaScript, elige React, Vue o Svelte según lo que ya uses. Todos incluyen la misma autenticación por debajo (Fortify).
¿Tengo que usar un starter kit para tener login?
No, pero es lo recomendado para arrancar rápido. También puedes construir la autenticación a mano con la fachada Auth (Auth::attempt()), aunque reharías lo que el starter kit ya te da resuelto.
¿Cómo protejo una ruta para usuarios logueados?
Con el middleware auth: Route::middleware('auth')->group(...). Agrega verified si además exiges email verificado.
¿Cómo obtengo el usuario autenticado?
Con auth()->user() en PHP o @auth / auth()->user() en Blade. auth()->id() te da solo el id.
¿Laravel soporta autenticación en dos pasos?
Sí. El 2FA con apps TOTP viene integrado en los starter kits vía Fortify y está activado por defecto en config/fortify.php.