Skip to content
Back to skills

Authjs

ASecurity

Guía oficial de Auth.js v5 para autenticación en aplicaciones modernas con soporte para Prisma Adapter

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
developmenttypescriptgobashreactnextjsgitapidatabase

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill authjs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Authjs?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Authjs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-authjs/badge)](https://www.skillsdirectory.com/skills/aibot88-authjs)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Files in this skill

  • SKILL.md3.6 KB
  • source.json596 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.