🔐 Sistema de login y registro en Laravel

🔐 Sistema de login y registro en Laravel

Aprende a autenticar usuarios de forma segura

Laravel ofrece varias formas de manejar la autenticación de usuarios. Con Blade podemos crear formularios de registro y login, validarlos en el controlador y protegerlos con CSRF. En esta lección veremos cómo implementar un sistema completo y seguro.

⚙️ Formulario de registro en Blade (visual)

@csrf

⚙️ Formulario de registro en Blade (código)


<form action="{{ route('register') }}" method="POST">
  @csrf
  <div class="mb-3">
    <label for="name">Nombre completo:</label>
    <input type="text" name="name" id="name" required>
  </div>
  <div class="mb-3">
    <label for="email">Correo electrónico:</label>
    <input type="email" name="email" id="email" required>
  </div>
  <div class="mb-3">
    <label for="password">Contraseña:</label>
    <input type="password" name="password" id="password" required>
  </div>
  <div class="mb-3">
    <label for="password_confirmation">Confirmar contraseña:</label>
    <input type="password" name="password_confirmation" id="password_confirmation" required>
  </div>
  <button type="submit">Registrarse</button>
</form>
  

⚙️ Formulario de login en Blade (visual)

@csrf

⚙️ Formulario de login en Blade (código)


<form action="{{ route('login') }}" method="POST">
  @csrf
  <div class="mb-3">
    <label for="email">Correo electrónico:</label>
    <input type="email" name="email" id="email" required>
  </div>
  <div class="mb-3">
    <label for="password">Contraseña:</label>
    <input type="password" name="password" id="password" required>
  </div>
  <button type="submit">Iniciar sesión</button>
</form>
  

🧠 Validación en el controlador


public function register(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users,email',
        'password' => 'required|string|min:8|confirmed'
    ]);

    $user = User::create([
        'name' => $validated['name'],
        'email' => $validated['email'],
        'password' => Hash::make($validated['password'])
    ]);

    Auth::login($user);

    return redirect()->route('dashboard')
                     ->with('success', 'Registro exitoso, bienvenido!');
}

public function login(Request $request)
{
    $credentials = $request->validate([
        'email' => 'required|email',
        'password' => 'required|string'
    ]);

    if (Auth::attempt($credentials)) {
        $request->session()->regenerate();
        return redirect()->route('dashboard');
    }

    return back()->withErrors([
        'email' => 'Las credenciales no coinciden.',
    ])->onlyInput('email');
}
  
Consejo: Siempre hashear contraseñas con Hash::make() y proteger formularios con CSRF.

📚 En resumen:

  • Usa @csrf en todos los formularios de POST.
  • Valida siempre los datos en el controlador.
  • Hashea contraseñas antes de guardarlas.
  • Registra y autentica usuarios usando el modelo User y Auth.
  • Recuerda regenerar sesión tras login por seguridad.

Publicar un comentario

0 Comentarios