React Academy · Oppitunti

Auth.js:n käyttöönotto Next.js App Routerissa

Asentakaa Auth.js, määrittäkää reittikäsittelijät ja lisätkää GitHub OAuth -provider.

Oppitunti 1/413 vaihetta

Auth.js:n käyttöönotto Next.js App Routerissa on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Mikä Auth.js on

Auth.js (aiemmin NextAuth.js v5) on monipuolinen Next.js:n todennuskirjasto. Se käsittelee OAuth-palveluntarjoajat, tunnistetiedot, istunnot ja JWT:t suoraan ilman erillistä toteutusta.

Asennus

Asenna Auth.js:n beta-versio ja alusta määritystiedosto.

npm install next-auth@beta

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

Todennusmäärityksen luominen

Määritä todennus projektin juuressa olevaan auth.ts-tiedostoon määrittämällä palveluntarjoajat ja callback-funktiot.

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

Reittikäsittelijän määrittäminen

Luo catch-all-reittikäsittelijä tiedostoon app/api/auth/[...nextauth]/route.ts ja välitä kutsut Auth.js:n käsittelijöille.

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

export const { GET, POST } = handlers;

Ympäristömuuttujat

Aseta OAuth-palveluntarjoajien tarvitsemat ympäristömuuttujat. AUTH_SECRET tarvitaan JWT:n allekirjoittamiseen.

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

Sisään- ja uloskirjautumispainikkeiden lisääminen

Tuo signIn- ja signOut-funktiot auth.ts-tiedostosta ja käytä niitä Server Componentien lomakkeissa.

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

Istunnon lukeminen Server Componenteissa

Kutsu auth()-funktiota auth.ts-tiedostosta missä tahansa Server Componentissa tai reittikäsittelijässä saadaksesi nykyisen istunnon.

import { auth } from '@/auth';

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

Sivujen suojaaminen middlewarella

Käytä Auth.js:n middlewarea reittien suojaamiseen edgessä ilman palvelinlogiikan suorittamista jokaisella pyynnöllä.

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

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

Tietokantapohjaiset istunnot

Lisää tietokanta-adapteri, kuten @auth/prisma-adapter, jotta istunnot, käyttäjät ja tilit säilytetään tietokannassa JWT:iden sijaan.

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

Istuntotyypin mukauttaminen

Laajenna Auth.js:n istuntotyyppejä niin, että ne sisältävät mukautettuja kenttiä, kuten käyttäjätunnuksen tai roolin.

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

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

Virheiden käsittely

Auth.js ohjaa todennusvirheissä oletusarvoisesti osoitteeseen /error. Luo app/error/page.tsx, jos haluat mukauttaa virhesivua.

Pikatarkistus

Mikä tiedosto on luotava, jotta Auth.js:n GET- ja POST-käsittelijät saadaan käyttöön Next.js App Routerissa?

Kertaus

Asenna next-auth@beta, luo auth.ts-tiedosto palveluntarjoajineen ja callback-funktioineen, tuo käsittelijät käyttöön osoitteessa app/api/auth/[...nextauth]/route.ts, aseta AUTH_SECRET ja palveluntarjoajien ympäristömuuttujat sekä lue istunto Server Componenteissa auth()-funktiolla.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Auth.js:n käyttöönotto Next.js App Routerissa” ilmainen?

Kyllä – oppitunnin ”Auth.js:n käyttöönotto Next.js App Routerissa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Auth.js:n käyttöönotto Next.js App Routerissa”?

Asentakaa Auth.js, määrittäkää reittikäsittelijät ja lisätkää GitHub OAuth -provider. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Auth.js:n käyttöönotto Next.js App Routerissa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Auth.js:n käyttöönotto Next.js App Routerissa
  2. Session hallinta ja useSession-hook
  3. Credentials Provider ja mukautettu kirjautuminen
  4. Middleware-pohjainen reittien suojaus
← Takaisin: React Academy