Guía oficial de Auth.js v5 para autenticación en aplicaciones modernas con soporte para Prisma Adapter
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill authjs --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Authjs?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-authjs)More formats (shields.io, HTML) on the badges page.
---
name: Auth.js (NextAuth v5)
description: Guía oficial de Auth.js v5 para autenticación en aplicaciones modernas con soporte para Prisma Adapter
---
# Auth.js v5 - Guía de Implementación
Auth.js (anteriormente NextAuth.js) es la solución estándar para autenticación en aplicaciones modernas, con un enfoque renovado en el App Router de Next.js.
## 1. Instalación de Dependencias
Para instalar la versión v5 (NextAuth @beta) y el adaptador de Prisma:
```bash
npm install next-auth@beta @auth/prisma-adapter
```
## 2. Configuración Centralizada
Se recomienda dividir la configuración en dos archivos para evitar problemas de dependencias circulares y compatibilidad con el Edge Runtime (Middleware).
### `auth.config.ts` (Configuración compartida)
Este archivo contiene la lógica que es compatible con el Edge Runtime (ej. Providers).
```typescript
import type { NextAuthConfig } from "next-auth";
import GitHub from "next-auth/providers/github";
import Google from "next-auth/providers/google";
export default {
providers: [
GitHub,
Google,
// Otros providers compatibles con Edge
],
} satisfies NextAuthConfig;
```
### `auth.ts` (Configuración principal)
Aquí se añade el adaptador de base de datos (Prisma).
```typescript
import NextAuth from "next-auth";
import { PrismaAdapter } from "@auth/prisma-adapter";
import { prisma } from "@/lib/prisma"; // IMPORTANTE: Tu instancia de Prisma configurada
import authConfig from "./auth.config";
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter: PrismaAdapter(prisma),
session: { strategy: "jwt" }, // O "database" si prefieres persistir sesiones
...authConfig,
});
```
## 3. Integración con Next.js (API Routes)
Crea el archivo `app/api/auth/[...nextauth]/route.ts`:
```typescript
import { handlers } from "@/auth"; // Referencia a tu archivo auth.ts
export const { GET, POST } = handlers;
```
## 4. Middleware (Protección de Rutas)
Crea el archivo `middleware.ts` en la raíz de tu proyecto para manejar la protección de rutas de forma global.
```typescript
import NextAuth from "next-auth";
import authConfig from "./auth.config";
export const { auth: middleware } = NextAuth(authConfig);
export const config = {
matcher: ["/((?!api|_next/static|_next/image|favicon.ico).*)"],
};
```
## 5. Variables de Entorno `.env`
Auth.js v5 requiere obligatoriamente una clave secreta.
```env
# Clave generada con: npx auth secret
AUTH_SECRET="tu_secreto_super_seguro"
# Credenciales de Providers
AUTH_GITHUB_ID="tu_id"
AUTH_GITHUB_SECRET="tu_secreto"
AUTH_GOOGLE_ID="tu_id"
AUTH_GOOGLE_SECRET="tu_secreto"
```
## 6. Uso en Componentes (Server & Client)
### Server Component (Recomendado)
```typescript
import { auth } from "@/auth";
export default async function Page() {
const session = await auth();
if (!session) return <div>No autenticado</div>;
return <div>Hola, {session.user?.name}</div>;
}
```
### Client Component
```typescript
"use client";
import { useSession } from "next-auth/react";
export default function ClientSideComponent() {
const { data: session } = useSession();
return <pre>{JSON.stringify(session, null, 2)}</pre>;
}
```
## 7. Mejores Prácticas
1. **Diferenciación auth.ts vs auth.config.ts**: Mantén el adaptador de base de datos solo en `auth.ts` para que el middleware (que usa `auth.config.ts`) no falle al intentar cargar drivers de base de datos no compatibles con Edge.
2. **Seguridad**: Nunca expongas el `AUTH_SECRET` en el cliente.
3. **Sesiones en DB vs JWT**: Si usas `PrismaAdapter`, por defecto se guardarán sesiones en la DB. Cambia a `strategy: "jwt"` si prefieres sesiones ligeras y stateless.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!