Laravel

Aprende Laravel: Autenticación

Autorangel cruz
Publicado
Lectura4 min de lectura
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-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:

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 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 id

Y 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>
@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:

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.

Recursos Adicionales