React Academy · Lezione

Configurazione di Auth.js nell'App Router di Next.js

Installi Auth.js, configuri i route handler e aggiunga un provider OAuth GitHub.

Lezione 1 di 413 passaggi

Configurazione di Auth.js nell'App Router di Next.js è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Che cos'è Auth.js

Auth.js (in precedenza NextAuth.js v5) è una libreria completa per l'autenticazione in Next.js. Gestisce provider OAuth, credenziali, sessioni e JWT senza richiedere configurazioni aggiuntive.

Installazione

Installi la versione beta di Auth.js e inizializzi il file di configurazione.

npm install next-auth@beta

# Create auth.ts at project root
touch auth.ts

Creare la configurazione di Auth

Definisca la configurazione dell'autenticazione in auth.ts nella root del progetto, specificando provider e callback.

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;
    },
  },
});

Configurare il gestore di route

Crei un gestore di route catch-all in app/api/auth/[...nextauth]/route.ts che deleghi la gestione delle richieste agli handler di Auth.js.

// app/api/auth/[...nextauth]/route.ts
import { handlers } from '@/auth';

export const { GET, POST } = handlers;

Variabili d'ambiente

Imposti le variabili d'ambiente necessarie per i provider OAuth. AUTH_SECRET è obbligatoria per la firma dei JWT.

# .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 secret

Aggiungere i pulsanti di accesso e uscita

Importi signIn e signOut da auth.ts e li utilizzi nei moduli dei 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>
  );
}

Leggere la sessione nei Server Components

Chiami auth() da auth.ts in qualsiasi Server Component o gestore di route per ottenere la sessione corrente.

import { auth } from '@/auth';

export default async function ProfilePage() {
  const session = await auth();
  if (!session) redirect('/login');
  return <h1>Welcome, {session.user?.name}</h1>;
}

Proteggere le pagine con il middleware

Utilizzi il middleware di Auth.js per proteggere le route all'edge senza eseguire la logica del server a ogni richiesta.

// middleware.ts
export { auth as middleware } from '@/auth';

export const config = {
  matcher: ['/dashboard/:path*', '/profile/:path*'],
};

Sessioni nel database

Aggiunga un adapter per il database (ad esempio @auth/prisma-adapter) per mantenere sessioni, utenti e account in un database invece di utilizzare JWT.

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' },
});

Personalizzare il tipo della sessione

Estenda i tipi della sessione di Auth.js per includere campi personalizzati, come l'ID dell'utente o il ruolo.

// types/next-auth.d.ts
import { DefaultSession } from 'next-auth';

declare module 'next-auth' {
  interface Session {
    user: { id: string; role: string } & DefaultSession['user'];
  }
}

Gestione degli errori

Per impostazione predefinita, Auth.js reindirizza a /error in caso di errori di autenticazione. Crei app/error/page.tsx per personalizzare la pagina di errore.

Verifica rapida

Quale file è necessario creare per esporre i gestori GET e POST di Auth.js nel Next.js App Router?

Riepilogo

Installi next-auth@beta, crei auth.ts con provider e callback, esponga i gestori in app/api/auth/[...nextauth]/route.ts, imposti AUTH_SECRET e le variabili d'ambiente dei provider e legga la sessione con auth() nei Server Components.

Gratis per iniziare

Impara React con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
88
Lezioni
324

Domande Frequenti

La lezione «Configurazione di Auth.js nell'App Router di Next.js» è gratuita?

Sì — il testo completo di «Configurazione di Auth.js nell'App Router di Next.js» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Configurazione di Auth.js nell'App Router di Next.js»?

Installi Auth.js, configuri i route handler e aggiunga un provider OAuth GitHub. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Configurazione di Auth.js nell'App Router di Next.js»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione di Auth.js nell'App Router di Next.js
  2. Gestione delle sessioni e hook useSession
  3. Credentials Provider e login personalizzato
  4. Protezione delle route basata sul middleware
← Torna a React Academy