Implementación de Login y Logout con NextAuth en React y Node.js

Clase 5 de 11Curso de Next.js: Autenticación

Resumen

¿Cómo implementar botones de inicio y cierre de sesión en una aplicación Next.js?

Cuando pensamos en optimizar nuestra aplicación web, buscamos recursos que faciliten tanto el desarrollo como la experiencia del usuario. NextAuth es una poderosa herramienta que no solo garantiza seguridad, sino que también simplifica el manejo de sesiones. En esta sección, te mostramos cómo integrar botones de inicio y cierre de sesión usando NextAuth en tu aplicación Next.js.

Configuración básica de Sign In y Sign Out

  1. Importación de métodos desde NextAuth: NextAuth ofrece métodos fáciles de usar para manejar las sesiones. Primero, importa los métodos necesarios. Utilizaremos signIn, signOut y el hook useSession.

    import { signIn, signOut, useSession } from 'next-auth/client';
    
  2. Renderizado de los botones de sesión: Dentro del componente que manejará el inicio y cierre de sesión, usamos useSession para verificar el estado de la sesión actual. Mostraremos el botón de inicio de sesión si no hay una sesión activa y el de cierre de sesión si la sesión está activa.

    const [session] = useSession();
    
    return (
      <>
        {!session ? (
          <button onClick={() => signIn()}>Sign In</button>
        ) : (
          <button onClick={() => signOut()}>Sign Out</button>
        )}
      </>
    );
    

Evitar el 'flash' de contenido no autenticado

Un problema común al manejar sesiones es el "flash" de contenido no autenticado, donde el contenido cambia abruptamente al cargar la página. Para solucionar este problema, useSession proporciona un estado de carga adicional.

  1. Uso del estado de carga: Este estado nos informa si la sesión está en proceso de carga, permitiendo ocultar el contenido hasta que la sesión se cargue completamente.

    const [session, loading] = useSession();
    
    if (loading) {
      return null; // No renderiza nada mientras carga
    }
    

Mostrar información del usuario

Una vez que la sesión está activa, podemos mostrar información específica del usuario, como su nombre, de una forma sencilla.

  1. Información de la sesión: La sesión no solo indica si un usuario está autenticado, sino que también almacena datos de interés como el nombre del usuario.

    {session && (
      <span>Welcome, {session.user.name}</span>
    )}
    

Aprovechamiento de múltiples opciones de autenticación

No es un secreto que muchos prefieren opciones de autenticación más rápidas como el ingreso con cuentas de redes sociales. Implementar login a través de plataformas como GitHub puede mejorar notablemente la experiencia del usuario. Exploraremos esta funcionalidad en más detalle en la siguiente clase.

En resumen, integrar NextAuth en tu aplicación Next.js no solo mejora la seguridad, sino que también ofrece un proceso de inicio de sesión y cierre de sesión fluido y eficiente. Al eliminar el "flash" de contenido no autenticado, aseguramos una experiencia más agradable para el usuario. ¡No dudes en experimentar y buscar siempre cómo mejorar el desempeño y la experiencia de tu aplicación web!