Jetstream en Laravel: Guía Completa
¿Qué es Jetstream?
Jetstream es un kit de inicio de aplicaciones para Laravel que proporciona una base sólida y moderna para nuevos proyectos. Fue introducido en Laravel 8 como reemplazo de Laravel UI y se ha convertido en la solución oficial para scaffolding de aplicaciones.
Características principales
1. Sistemas de Autenticación
Jetstream ofrece dos stacks diferentes:
Livewire (con Blade)
Inertia.js (con Vue.js o React)
Ambos proporcionan:
Login/Registro con verificación de email
Verificación en dos factores (2FA)
Gestión de perfil (foto, información personal)
Gestión de sesiones (ver dispositivos activos)
API Tokens (para aplicaciones de tipo API)
2. Funcionalidades incluidas
// Todo viene preconfigurado:
- Autenticación completa
- Dashboard principal
- Perfil de usuario
- Configuración de cuenta
- Navegación responsiva
- Componentes listos para usarRelación con Autenticaciones
Cómo Jetstream maneja la autenticación
// 1. **Scaffolding completo**
php artisan jetstream:install livewire
// o
php artisan jetstream:install inertia
// 2. **Migraciones incluyen**:
- Tabla users (ampliada)
- Tabla password_reset_tokens
- Tabla sessions (para gestionar sesiones)
- Tabla personal_access_tokens (para API)
// 3. **Funcionalidades de seguridad**:
- Confirmación de contraseña para acciones críticas
- Verificación de email
- Two-Factor Authentication (2FA)
- Gestión de sesiones del navegadorTutorial Básico de Instalación
Paso 1: Instalar Laravel
composer create-project laravel/laravel mi-proyecto
cd mi-proyectoPaso 2: Instalar Jetstream
composer require laravel/jetstream
# Para Livewire:
php artisan jetstream:install livewire
# Para Inertia (con Vue):
php artisan jetstream:install inertia --teamsPaso 3: Configurar base de datos
# Crear base de datos
# Configurar .env con credenciales de BD
php artisan migrate
npm install && npm run devPaso 4: Ejecutar la aplicación
php artisan serveEstructura de archivos generada
app/
├── Actions/
│ ├── Fortify/ # Lógica de autenticación
│ └── Jetstream/ # Acciones específicas
├── Http/
│ └── Middleware/ # Middlewares de autenticación
├── Models/ # User model ampliado
├── View/Components/ # Componentes de Blade
└── Providers/ # Service Providers
resources/
├── js/ # Assets JavaScript
├── views/ # Vistas de autenticación
└── markdown/ # Emails MarkdownPersonalización de Autenticación
Modificar rutas de autenticación
// En app/Providers/JetstreamServiceProvider.php
public function boot()
{
$this->configurePermissions();
// Personalizar rutas
Jetstream::createTeamsUsing(CreateTeam::class);
Jetstream::updateTeamNamesUsing(UpdateTeamName::class);
}Agregar campos al registro
// En app/Actions/Fortify/CreateNewUser.php
public function create(array $input)
{
Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => $this->passwordRules(),
'phone' => ['required', 'string', 'max:20'], // Campo adicional
])->validate();
return User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
'phone' => $input['phone'], // Guardar campo adicional
]);
}Modificar vistas
# Publicar vistas para personalizarlas
php artisan vendor:publish --tag=jetstream-viewsCaracterísticas de Seguridad
1. Two-Factor Authentication (2FA)
// Habilitar en config/fortify.php
'features' => [
Features::twoFactorAuthentication([
'confirm' => true,
'confirmPassword' => true,
]),
],2. Confirmación de contraseña
// Proteger rutas sensibles
Route::middleware(['auth', 'password.confirm'])->group(function () {
Route::get('/configuracion', function () {
// Solo accesible después de confirmar contraseña
});
});3. Gestión de sesiones
{{-- En vista de perfil --}}
<x-jet-action-section>
<x-slot name="title">
{{ __('Sesiones del navegador') }}
</x-slot>
{{-- Muestra todas las sesiones activas --}}
<x-jet-action-message on="loggedOut">
{{ __('Cerrada en todos los dispositivos.') }}
</x-jet-action-message>
</x-jet-action-section>API Tokens con Sanctum
// Jetstream integra Laravel Sanctum
// Generar tokens para API:
$token = $user->createToken('token-name', ['server:update']);
// Usar en solicitudes:
Authorization: Bearer {token}
// Revocar tokens:
$user->tokens()->delete();Ventajas sobre soluciones anteriores
| Característica | Laravel UI | Jetstream |
|---|---|---|
| Scaffolding | Básico | Completo (UI + lógica) |
| 2FA | Manual | Integrado |
| Sesiones | No | Gestión completa |
| API Tokens | No | Con Sanctum |
| Teams | No | Opcional |
| Estilos | Bootstrap | Tailwind CSS |
Conclusión
Jetstream es mucho más que un simple sistema de autenticación. Es un kit de inicio completo que incluye:
✅ Autenticación robusta con características avanzadas de seguridad
✅ Interfaz moderna con Tailwind CSS
✅ Dos stacks (Livewire o Inertia) según preferencias
✅ API lista con Sanctum
✅ Gestión de equipos opcional
✅ Base sólida para escalar aplicaciones
Es la solución recomendada para nuevos proyectos Laravel que requieren autenticación robusta con características modernas de seguridad y UX.
Recursos adicionales
# Documentación oficial:
https://jetstream.laravel.com
# Repositorio GitHub:
https://github.com/laravel/jetstream
# Video tutorial oficial:
https://laracasts.com/series/laravel-8-from-scratchRecomendación: Si empiezas un proyecto nuevo en Laravel 9 o superior, Jetstream es la mejor opción para ahorrar tiempo y tener una base segura y profesional desde el primer día.
Comentarios
Publicar un comentario