---
title: "Aprende Laravel: Autenticación"
excerpt: "Aprende a manejar la autenticación en Laravel 13: los starter kits con Fortify (login, registro, 2FA), cómo proteger rutas con middleware y cómo acceder al usuario autenticado."
date: "2026-07-20T09:30:00.000Z"
category: "Laravel"
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
ogImage:
  url: "/images/open-graph/laravel-opengraph-image.png"
seo_title: "Autenticación en Laravel 13: starter kits, Fortify y rutas"
seo_description: "Aprende autenticación en Laravel 13: starter kits (React, Vue, Livewire) con Fortify, login y registro listos, proteger rutas con middleware y acceder al usuario."
keywords:
  - laravel
  - autenticación
  - login
  - fortify
  - starter kits
  - laravel español
learning_path:
  series: "laravel-fundamentals"
  order: 8
  total: 13
  prev_slug: "aprende-laravel-validacion"
  next_slug: "aprende-laravel-middleware"
---

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:

```shell
laravel new mi-app
```

Laravel 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:

```shell
cd mi-app
npm install && npm run build
composer run dev
```

Ya 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](https://laravel.com/docs/13.x/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`:

```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`:

```php
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`:

```php
$user = auth()->user();   // el modelo User autenticado
$id   = auth()->id();     // solo el id
```

Y en Blade, las directivas `@auth` y `@guest` muestran contenido según el estado:

```blade
@auth
    Hola, {{ auth()->user()->name }}.
@endauth

@guest
    <a href="/login">Iniciar sesión</a>
@endguest
```

## Personalizar 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`:

```php
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](/post/aprende-laravel-validacion)) 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](/post/ia-para-desarrolladores-laravel), o vuelve al índice de la serie en [Aprende Laravel desde cero](/laravel-fundamentals).

## 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`.

## Recursos Adicionales

- [Starter Kits | Laravel 13.x](https://laravel.com/docs/13.x/starter-kits)
- [Laravel Fortify | Laravel 13.x](https://laravel.com/docs/13.x/fortify)
- [Aprende Laravel: Validación](/post/aprende-laravel-validacion)
- [Aprende Laravel desde cero (serie completa)](/laravel-fundamentals)

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://www.angelcruz.dev/sitemap.md)

Canónico HTML: [https://www.angelcruz.dev/post/aprende-laravel-autenticacion](https://www.angelcruz.dev/post/aprende-laravel-autenticacion)
