NextAuth.js v5 mit Claude Code: OAuth und Session Management 2026

NextAuth.js v5 (jetzt Auth.js) ist die Standard-Auth-Lösung für Next.js — OAuth Provider, Credentials, Database Adapter, JWT/Database Sessions und App Router Integration. Claude Code konfiguriert vollständige Auth-Systeme in Minuten.

NextAuth v5 Setup: auth.ts Konfiguration

SetupGrundkonfiguration mit App Router

# Prompt: "Konfiguriere NextAuth v5 mit Google, GitHub OAuth und Prisma Adapter" // auth.ts — Claude Code generiert zentrale Auth-Konfiguration: import NextAuth from 'next-auth' import Google from 'next-auth/providers/google' import GitHub from 'next-auth/providers/github' import { PrismaAdapter } from '@auth/prisma-adapter' import { db } from '@/lib/db' export const { handlers, auth, signIn, signOut } = NextAuth({ adapter: PrismaAdapter(db), providers: [ Google({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET! }), GitHub({ clientId: process.env.GITHUB_CLIENT_ID!, clientSecret: process.env.GITHUB_CLIENT_SECRET! }) ], session: { strategy: 'database' }, // oder 'jwt' callbacks: { async session({ session, user }) { session.user.id = user.id // User-ID zur Session hinzufügen session.user.role = user.role // Custom Felder (Prisma User-Schema) return session } }, pages: { signIn: '/auth/login', // Custom Login Page error: '/auth/error' } }) // app/api/auth/[...nextauth]/route.ts: export { handlers as GET, handlers as POST } from '@/auth'

Credentials Provider: Email + Password

CredentialsEigenes Login-Formular

# Prompt: "Füge Email/Password Login mit bcrypt hinzu" import Credentials from 'next-auth/providers/credentials' import bcrypt from 'bcryptjs' import { z } from 'zod' Credentials({ async authorize(credentials) { // Zod Validation const parsed = z.object({ email: z.string().email(), password: z.string().min(8) }).safeParse(credentials) if (!parsed.success) return null const user = await db.user.findUnique({ where: { email: parsed.data.email } }) if (!user?.passwordHash) return null const passwordMatch = await bcrypt.compare( parsed.data.password, user.passwordHash ) if (!passwordMatch) return null return { id: user.id, email: user.email, name: user.name } } })
Credentials + Database Adapter: Credentials Provider funktioniert NUR mit JWT-Strategy, nicht mit Database Sessions. Claude Code warnt automatisch vor diesem häufigen Konfigurations-Fehler.

Middleware: Routen schützen

MiddlewareAutomatischer Auth-Schutz

// middleware.ts — Root-Level, schützt alle Routen: export { auth as middleware } from '@/auth' export const config = { matcher: [ // Alle Routen außer public '/((?!api/auth|_next/static|_next/image|favicon.ico|login|signup).*)' ] } // Erweiterte Middleware mit Rollen: export default auth(async (req) => { const session = req.auth const isLoggedIn = !!session if (!isLoggedIn) { return Response.redirect(new URL('/login', req.url)) } // Admin-Bereich: nur für Admins if (req.nextUrl.pathname.startsWith('/admin') && session.user.role !== 'admin') { return Response.redirect(new URL('/403', req.url)) } }) // In Server Components: Session lesen import { auth } from '@/auth' const session = await auth() // null wenn nicht eingeloggt
NextAuth-Prompt: "Konfiguriere NextAuth v5 mit Google OAuth, Prisma Adapter, JWT-Sessions und Middleware für geschützte /dashboard Routen. Ergänze TypeScript Types für Custom Session Fields."

Auth-Modul im Kurs

Im Claude Code Mastery Kurs: vollständiges NextAuth v5 Modul — OAuth, Credentials, JWT vs. Database Sessions, Adapter, Middleware und Role-Based Access Control.

14 Tage kostenlos testen →