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.
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.tsTodennusmää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 secretSisää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.
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
- Auth.js:n käyttöönotto Next.js App Routerissa
- Session hallinta ja useSession-hook
- Credentials Provider ja mukautettu kirjautuminen
- Middleware-pohjainen reittien suojaus