Auth.js im Next.js App Router einrichten
Installieren Sie Auth.js, konfigurieren Sie Route Handler und fügen Sie einen GitHub-OAuth-Provider hinzu.
Auth.js im Next.js App Router einrichten ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Auth.js?
Auth.js (früher NextAuth.js v5) ist eine umfassende Authentifizierungsbibliothek für Next.js. Sie unterstützt standardmäßig OAuth-Anbieter, Zugangsdaten, Sitzungen und JWT.
Installation
Installieren Sie die Auth.js-Beta und initialisieren Sie die Konfigurationsdatei.
npm install next-auth@beta
# Create auth.ts at project root
touch auth.tsAuth-Konfiguration erstellen
Definieren Sie Ihre Auth-Konfiguration in auth.ts im Projektstammverzeichnis, einschließlich Providern und Callbacks.
import NextAuth from 'next-auth';
import GitHub from 'next-auth/providers/github';
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [GitHub],
callbacks: {
session({ session, token }) {
session.user.id = token.sub!;
return session;
},
},
});Route-Handler einrichten
Erstellen Sie einen Catch-all-Route-Handler in app/api/auth/[...nextauth]/route.ts, der die Verarbeitung an die Auth.js-Handler delegiert.
// app/api/auth/[...nextauth]/route.ts
import { handlers } from '@/auth';
export const { GET, POST } = handlers;Umgebungsvariablen
Setzen Sie die erforderlichen Umgebungsvariablen für OAuth-Anbieter. AUTH_SECRET wird zum Signieren von JWTs benötigt.
# .env.local
AUTH_SECRET=your-random-secret-here
# GitHub OAuth
AUTH_GITHUB_ID=your-github-client-id
AUTH_GITHUB_SECRET=your-github-client-secret
# Generate AUTH_SECRET:
# npx auth secretAnmelde- und Abmelde-Buttons hinzufügen
Importieren Sie signIn und signOut aus auth.ts und verwenden Sie sie in Formularen von Server Components.
import { signIn, signOut } from '@/auth';
export function SignInButton() {
return (
<form action={async () => { 'use server'; await signIn('github'); }}>
<button type="submit">Sign in with GitHub</button>
</form>
);
}
export function SignOutButton() {
return (
<form action={async () => { 'use server'; await signOut(); }}>
<button type="submit">Sign out</button>
</form>
);
}Sitzung in Server Components auslesen
Rufen Sie auth() aus auth.ts in einer beliebigen Server Component oder einem Route-Handler auf, um die aktuelle Sitzung abzurufen.
import { auth } from '@/auth';
export default async function ProfilePage() {
const session = await auth();
if (!session) redirect('/login');
return <h1>Welcome, {session.user?.name}</h1>;
}Seiten mit Middleware schützen
Verwenden Sie Auth.js-Middleware, um Routen am Edge zu schützen, ohne bei jeder Anfrage Serverlogik auszuführen.
// middleware.ts
export { auth as middleware } from '@/auth';
export const config = {
matcher: ['/dashboard/:path*', '/profile/:path*'],
};Datenbank-Sitzungen
Fügen Sie einen Datenbank-Adapter hinzu, beispielsweise @auth/prisma-adapter, um Sitzungen, Benutzer und Konten in einer Datenbank statt in JWTs zu speichern.
import { PrismaAdapter } from '@auth/prisma-adapter';
import { prisma } from '@/lib/prisma';
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter: PrismaAdapter(prisma),
providers: [GitHub],
session: { strategy: 'database' },
});Sitzungstyp anpassen
Erweitern Sie die Sitzungstypen von Auth.js um benutzerdefinierte Felder wie die Benutzer-ID oder die Rolle.
// types/next-auth.d.ts
import { DefaultSession } from 'next-auth';
declare module 'next-auth' {
interface Session {
user: { id: string; role: string } & DefaultSession['user'];
}
}Fehlerbehandlung
Auth.js leitet bei Authentifizierungsfehlern standardmäßig zu /error weiter. Erstellen Sie app/error/page.tsx, um die Fehlerseite anzupassen.
Kurztest
Welche Datei müssen Sie erstellen, um die GET- und POST-Handler von Auth.js im Next.js App Router bereitzustellen?
Zusammenfassung
Installieren Sie next-auth@beta, erstellen Sie auth.ts mit Providern und Callbacks, stellen Sie die Handler unter app/api/auth/[...nextauth]/route.ts bereit, setzen Sie AUTH_SECRET und die Umgebungsvariablen der Anbieter und lesen Sie die Sitzung mit auth() in Server Components aus.
Häufig gestellte Fragen
Ist die Lektion „Auth.js im Next.js App Router einrichten“ kostenlos?
Ja — der vollständige Text von „Auth.js im Next.js App Router einrichten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Auth.js im Next.js App Router einrichten“?
Installieren Sie Auth.js, konfigurieren Sie Route Handler und fügen Sie einen GitHub-OAuth-Provider hinzu. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Auth.js im Next.js App Router einrichten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Auth.js im Next.js App Router einrichten
- Sitzungsverwaltung und useSession-Hook
- Credentials-Provider und benutzerdefinierte Anmeldung
- Route-Schutz auf Middleware-Basis