Übungsaufgaben für Auth.js v5

Drei Aufgaben, die aufeinander aufbauen — vom ersten Login bis zur geschützten Route mit Split-Config. Bau sie in einer frischen Next.js 15 App (App Router). Zu jeder Aufgabe gibt es einen KI-Review-Prompt: kopieren, deinen Code dranhängen, strukturiertes Feedback bekommen.

Setup-Tipp: Starte mit npx create-next-app@latest, dann npm install next-auth@beta und npx auth secret. Eine GitHub-OAuth-App ist in zwei Minuten angelegt — Callback-URL http://localhost:3000/api/auth/callback/github.
Aufgabe

Login-Flow zum Laufen bringen

●○○45 min

Bring den kompletten Login-Kreislauf zum Laufen: zentrale auth.ts mit GitHub-Provider, der Catch-all-Route-Handler, die Env-Variablen, und ein Login- sowie Logout-Button als Server Action. Nach dem Klick landest du wieder auf der Startseite — diesmal eingeloggt.

  • auth.ts exportiert handlers, signIn, signOut, auth
  • Route-Handler liegt exakt unter app/api/auth/[...nextauth]/route.ts
  • AUTH_SECRET + AUTH_GITHUB_ID/_SECRET in .env.local
  • Login-Button ruft signIn("github") als inline Server Action
  • Logout-Button ruft signOut() — nach Klick bist du ausgeloggt
KI-Review starten

Kopiere den Prompt in eine KI deiner Wahl und hänge deine auth.ts, den Route-Handler und die Button-Komponente an.

Aufgabe

Session in drei Kontexten anzeigen

●●○1 h

Zeig denselben eingeloggten Nutzer an drei Stellen: in einer Server Component (Profilseite), über einen Route Handler (GET /api/me gibt JSON zurück) und reaktiv im Client (ein Header-Avatar via useSession() mit SessionProvider). Achte darauf, welche Variante wo hingehört.

  • Profilseite ist eine async Server Component mit await auth()
  • Nicht-eingeloggt wird sauber behandelt (Hinweis statt Crash)
  • /api/me ist mit auth((req) => ...) gewickelt und gibt 401 ohne Session
  • SessionProvider wickelt die App in einer "use client"-Datei
  • Avatar nutzt useSession() und behandelt den loading-Status
KI-Review starten

Kopiere den Prompt und hänge deine Profilseite, den /api/me-Handler, den Provider und die Avatar-Komponente an.

Aufgabe

Geschützte Route mit Split-Config

●●●1,5 h

Schütze einen /dashboard-Bereich: ein authorized-Callback erlaubt ihn nur Eingeloggten, die Middleware setzt es durch. Lege die Config so an, dass sie auch mit einem DB-Adapter edge-tauglich bliebe — also als Split-Config (auth.config.ts + auth.ts), wobei die Middleware nur den edge-sicheren Kern lädt.

  • authorized-Callback erlaubt /dashboard nur bei !!auth?.user
  • auth.config.ts enthält Provider + Callbacks, KEINEN Adapter
  • auth.ts spreizt ...authConfig und ergänzt (optional) den Adapter + strategy: "jwt"
  • middleware.ts baut NextAuth(authConfig) — importiert NICHT @/auth
  • matcher nimmt _next und statische Assets aus
  • Ausgeloggt + /dashboard aufrufen leitet zum Login um
KI-Review starten

Kopiere den Prompt und hänge auth.config.ts, auth.ts, middleware.ts und eine /dashboard-Seite an.