El error “Route [login] not defined” en Laravel aparece cuando el framework intenta redirigir o generar una URL hacia una ruta llamada login, pero esa ruta no existe en tu archivo de rutas. Es muy común en proyectos nuevos de Laravel 11 y 12, especialmente cuando se usa middleware auth sin haber instalado un sistema de autenticación.
En esta guía aprenderás por qué ocurre, cómo solucionarlo paso a paso y qué hacer según el tipo de proyecto que estés desarrollando.
¿Por qué aparece el error “Route [login] not defined”?
Este error ocurre cuando:
- Estás usando el middleware auth
- Laravel intenta redirigir automáticamente al usuario a
route('login') - Pero la ruta login no fue creada
En Laravel 11 y 12, el sistema de autenticación no viene instalado por defecto. Si no agregas un starter kit como Breeze, no tendrás las rutas /login, /register, etc.
¿Dónde se genera el error?
Generalmente aparece en:
- Rutas protegidas con
->middleware('auth') - Controladores que usan
Auth::check() - Redirecciones como
redirect()->route('login') - En el archivo
app/Exceptions/Handler.php - En
app/Http/Middleware/Authenticate.php
Laravel intenta redirigir automáticamente a:
return route('login');Pero como no existe, lanza el error.
![Route [login] not defined en Laravel 11 y 12 causas y soluciones definitivas](https://www.baulphp.com/wp-content/uploads/2026/02/Route-login-not-defined-en-Laravel-11-y-12-causas-y-soluciones-definitivas.webp)
SOLUCIONES PARA LARAVEL 11 Y 12
Solución 1: Instalar autenticación con Laravel Breeze (Recomendado)
¿Qué es Laravel Breeze?
Laravel Breeze es el starter kit oficial y ligero de autenticación para Laravel. Crea automáticamente:
- Ruta login
- Ruta register
- Middleware configurado
- Vistas listas para usar
Instalación en Laravel 11 o 12
Instalar Breeze
composer require laravel/breeze --devInstalar scaffolding
php artisan breeze:installPuedes elegir Blade, React, Vue o API.
Instalar dependencias
npm install && npm run buildEjecutar migraciones
php artisan migrateAhora la ruta login ya estará definida y el error desaparecerá.
Solución 2: Definir manualmente la ruta login
Si no quieres usar Breeze y solo necesitas evitar el error, puedes crear la ruta manualmente.
En routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/login', function () {
return view('login');
})->name('login');Esto crea la ruta que Laravel espera.
¿Cuándo usar esta solución?
- Proyecto pequeño
- Sistema interno sin registro
- API con login personalizado
Solución 3: Proyecto API sin vistas (Muy común en Laravel 11)
Si estás creando una API y no necesitas login web, debes modificar el middleware.
Editar:
app/Http/Middleware/Authenticate.phpCambiar el método:
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}Por ejemplo, puedes dejarlo así:
protected function redirectTo($request)
{
return null;
}O simplemente eliminar la redirección.
Esto evitará que Laravel intente buscar la ruta login.
Solución 4: Verificar que la ruta exista realmente
Ejecuta:
php artisan route:listBusca si aparece:
GET|HEAD login loginSi no aparece, entonces no está creada.
Solución 5: Revisar uso incorrecto de middleware
Si tienes algo como esto:
Route::middleware('auth')->group(function () {
Route::get('/dashboard', function () {
return view('dashboard');
});
});Pero no tienes autenticación instalada, generará el error.
Solución
O instalas Breeze
O eliminas temporalmente el middleware auth
Diferencias en Laravel 11 y 12
Laravel cambió su estructura desde la versión 11:
- No incluye autenticación por defecto
- No incluye rutas auth automáticas
- Requiere instalar un starter kit
Esto hace que el error sea más común que en Laravel 8, 9 o 10.
Errores relacionados
Muchas veces este error viene acompañado de:
- 500 Internal Server Error
- Target class [LoginController] does not exist
- Call to undefined method
Si instalaste Breeze y sigue fallando, limpia caché:
php artisan route:clear
php artisan config:clear
php artisan cache:clearBuenas prácticas para evitar este error
- Siempre revisar
route:list - Instalar autenticación antes de usar
auth - Si es API, configurar correctamente
Authenticate.php - No usar
redirect()->route('login')si no existe
Conclusión
El error Route [login] not defined en Laravel 11 y 12 ocurre porque el framework intenta redirigir a una ruta que no ha sido creada.
- La solución más recomendada es instalar Laravel Breeze, ya que configura todo automáticamente.
- Si estás desarrollando una API, simplemente elimina la redirección del middleware.
- Con estas soluciones tu proyecto volverá a funcionar correctamente sin errores de autenticación.
Nota:
SI se presenta algun error es bueno activar el modo debug en el fichero.env.
![Route [login] not defined en Laravel 11 y 12: causas y soluciones definitivas](https://www.baulphp.com/wp-content/uploads/2026/02/Route-login-not-defined-en-Laravel-11-y-12-causas-y-soluciones-definitivas-1024x682.webp)