馃攼 Autenticaci贸n con NextAuth.js

Next.js NextAuth.js

18 - 馃攼 Autenticaci贸n con NextAuth.js

Aprende a implementar autenticaci贸n en tu proyecto Next.js usando NextAuth.js, soportando proveedores externos y credenciales personalizadas.


馃攳 ¿Qu茅 es NextAuth.js?

NextAuth.js es una librer铆a para Next.js que simplifica la autenticaci贸n de usuarios, ofreciendo soporte para:

  • Inicio de sesi贸n con proveedores externos (Google, GitHub, Facebook, etc.).
  • Autenticaci贸n basada en credenciales propias.
  • Manejo de sesiones, JWT y cookies seguras autom谩ticamente.
馃挕 NextAuth.js se integra con API Routes de Next.js, por lo que la l贸gica de autenticaci贸n se maneja de forma segura en el backend.

⚙️ Instalaci贸n

Instala NextAuth.js y su adaptador de base de datos (opcional):

npm install next-auth
npm install @next-auth/prisma-adapter
    

馃敆 Configuraci贸n de NextAuth.js

Crea un archivo de API Route para NextAuth.js:

// app/api/auth/[...nextauth]/route.js
import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import { PrismaAdapter } from "@next-auth/prisma-adapter";
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

const handler = NextAuth({
  adapter: PrismaAdapter(prisma),
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  session: {
    strategy: "jwt",
  },
  callbacks: {
    async session({ session, token, user }) {
      session.user.id = token.sub;
      return session;
    },
  },
});

export { handler as GET, handler as POST };
      

馃挕 Explicaci贸n:

  • Providers: Define los proveedores de autenticaci贸n (Google, GitHub, etc.).
  • Adapter: PrismaAdapter conecta la autenticaci贸n con tu base de datos.
  • Session Strategy: JWT para mantener la sesi贸n del usuario de forma segura.
  • Callbacks: Permiten personalizar la sesi贸n y token devuelto al cliente.

馃枼️ Uso en componentes de Next.js

Puedes usar los hooks useSession y signIn / signOut en tus componentes React.

import { useSession, signIn, signOut } from "next-auth/react";

export default function LoginButton() {
  const { data: session } = useSession();

  if (session) {
    return (
      <div>
        <p>Hola, {session.user.name}</p>
        <button onClick={() => signOut()}>Cerrar sesi贸n</button>
      </div>
    );
  }

  return <button onClick={() => signIn("google")}>Iniciar sesi贸n con Google</button>;
}
      

✅ Resumen

  • 馃攼 NextAuth.js simplifica la autenticaci贸n en Next.js.
  • ⚡ Soporta proveedores externos y credenciales propias.
  • 馃敆 Integra f谩cilmente con Prisma y tu base de datos.
  • 馃挕 Hooks como useSession, signIn y signOut permiten controlar la sesi贸n desde el frontend.

Publicar un comentario

0 Comentarios