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,signInysignOutpermiten controlar la sesi贸n desde el frontend.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias