Dette biblioteket lar deg sømløst integrere Google-autentisering i Next.js-applikasjonen din, og eliminerer behovet for å utvikle den fra bunnen av.

Integrering av et sikkert autentiseringssystem er et viktig utviklingstrinn som ikke bare gir et trygt miljø for brukerne, men som også skaper tillit til produktet ditt. Dette systemet sikrer at dataene deres er beskyttet og at kun autoriserte personer har tilgang til applikasjonen.

Å bygge en sikker autentisering fra grunnen av kan være en tidkrevende prosess som krever en grundig forståelse av autentiseringsprotokoller og prosesser, spesielt ved håndtering av annen autentisering tilbydere.

Ved å bruke NextAuth kan du flytte fokus til å bygge kjernefunksjonene. Les videre for å lære hvordan du integrerer Googles sosiale pålogging i applikasjonen din ved hjelp av NextAuth.

Hvordan fungerer NextAuth

NextAuth.js er et åpen kildekode-autentiseringsbibliotek som forenkler prosessen med å legge til autentisering og autorisasjon funksjonalitet til Next.js-applikasjoner samt tilpasse autentiseringsarbeidsflyter. Den gir en rekke funksjoner som e-post, passordløs autentisering og støtte for ulike autentiseringsleverandører som Google, GitHub og mer.

instagram viewer

På et høyt nivå fungerer NextAuth som en mellomvare, og letter autentiseringsprosessen mellom applikasjonen din og leverandøren. Under panseret, når en bruker prøver å logge på, blir de omdirigert til Googles påloggingsside. Etter vellykket autentisering returnerer Google en nyttelast som inkluderer brukerens data, for eksempel navn og e-postadresse. Disse dataene brukes til å autorisere tilgang til applikasjonen og dens ressurser.

Ved å bruke nyttelastdataene oppretter NextAuth en økt for hver autentisert bruker og lagrer økttokenet i en sikker HTTP-bare informasjonskapsel. Sesjonstokenet brukes til å bekrefte brukerens identitet og opprettholde autentiseringsstatusen. Denne prosessen gjelder også for andre tilbydere med små variasjoner i gjennomføringen.

Registrer Next.js-applikasjonen din på Google Developer Console

NextAuth gir støtte for Googles autentiseringstjeneste. Men for applikasjonen din å samhandle med Google APIer og tillate brukere å autentisere seg med deres Google-legitimasjon, må du registrere appen din på Googles utviklerkonsoll og få en klient-ID og Klienthemmelighet.

For å gjøre det, naviger til Google Developer Console. Deretter logger du på med Google-kontoen din for å få tilgang til konsollen. Når du er logget på, oppretter du et nytt prosjekt.

På prosjektets oversiktsside velger du APIer og tjenester fanen fra listen over tjenester i venstre menypanel og til slutt Legitimasjon alternativ.

Klikk på Opprett legitimasjon for å generere klient-ID og klienthemmelighet. Deretter spesifiserer du applikasjonstypen fra de gitte alternativene og oppgir deretter et navn for applikasjonen.

Deretter spesifiserer du appens hjemmerute-URL og til slutt spesifiser den autoriserte omdirigerings-URIen for applikasjonen din. For dette tilfellet burde det være det http://localhost: 3000/api/auth/callback/google som spesifisert av NextAuths Google-leverandørinnstillinger.

Etter vellykket registrering vil Google gi deg en klient-ID og klienthemmelighet for bruk i appen din.

Sett opp NextJS-applikasjonen

For å komme i gang, lag et Next.js-prosjekt lokalt:

npx create-next-app next-auth-app

Etter at oppsettet er fullført, naviger til den nyopprettede prosjektkatalogen og kjør denne kommandoen for å spinne opp utviklingsserveren.

npm kjøre dev

Åpne nettleseren og naviger til http://localhost: 3000. Dette bør være det forventede resultatet.

Du kan finne dette prosjektets kode i sin GitHub-depot.

Sette opp .env-filen

Opprett en ny fil i prosjektets rotmappe og navngi den .env for å holde klient-ID, hemmelighet og basis-URL.

NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'klient-ID'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'hemmelig'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'

NextAUTH-URLen brukes til å spesifisere basis-URLen til applikasjonen din, som brukes til å omdirigere brukere etter at autentiseringen er fullført.

Integrer NextAuth i Next.js-applikasjonen din

Installer først NextAuths bibliotek i prosjektet ditt.

npm install next-auth

Neste, i /pages katalog, opprett en ny mappe og navngi den api. Endre katalogen til api mappe, og opprett en annen mappe kalt auth. I auth-mappen legger du til en ny fil og gir den et navn [...nextauth].js og legg til følgende kodelinjer.

import NextAuth fra"neste-auth/neste";
import GoogleProvider fra"next-auth/providers/google";
eksportmisligholde NextAuth({
leverandører:[
GoogleProvider({
klient-ID: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]

});

Denne koden konfigurerer Google som autentiseringsleverandør. NextAuth-funksjonen definerer Google-leverandørkonfigurasjonsobjektet som tar inn to egenskaper: en klient-ID og en klienthemmelighet som initialiserer leverandøren.

Deretter åpner du pages/_app.js fil og gjør følgende endringer i koden.

import'../styles/globals.css'
import { SessionProvider } fra"neste-auth/reager"
funksjonMin App({ Component, pageProps: { session, ...pageProps } }) {
komme tilbake (


</SessionProvider>
 )
}
eksportmisligholde Min App

NextAuth's SessionProvider komponenten gir funksjonalitet for administrasjon av autentiseringstilstand til Next.js-appen. Det tar en økt prop som inneholder autentiseringsøktdataene returnert fra Googles API som inkluderer brukerdetaljer som ID, e-post og tilgangstoken.

Ved å pakke inn Min App komponent med SessionProvider-komponenten, blir autentiseringsøktobjektet med brukerdetaljer gjort tilgjengelig gjennom hele applikasjonen, slik at applikasjonen kan bestå og gjengi sider basert på deres autentiseringsstatus.

Konfigurer filen index.js

Åpne pages/index.js fil, slett koden og legg til koden nedenfor for å opprette en påloggingsknapp som dirigerer brukere til en påloggingsside.

import Hode fra'neste/hode'
import stiler fra'../styles/Home.module.css'
import { useRouter } fra'neste/ruter';

eksportmisligholdefunksjonHjem() {
konst ruter = brukRouter();

komme tilbake (



Opprett neste app<<span>/title></span><br> <meta name="<span">"description" content=<span>"Generert av create next app"</span> /> <br> <lenke rel="<span">"icon" href=<span>"/favicon.ico"</span> /><br> <<span>/Head></span><p> <main classname="{styles.main}"><br> <h1 classname="{styles.title}"> <br> Velkommen til <a href="<span">" https://nextjs.org">Next.js!<<span>/a></span><br> <<span>/h1></span></a> </h1></main></p> <p> </p> <p classname="{styles.description}"><br> Kom i gang ved å logge <span>på</span>{<span>' ' </span>}<br> <kode classname="{styles.code}"><span>med</span> Google-kontoen din<<span>/code></span><br> <button classname="{styles.loginButton}<br/"> onClick={ () => router.push(<span>'/Login'</span>)}> Logg på<<span>/button></span><br> <<span>/p></span><br> < <span>/main></span></button></kode></p> <p><code> <<span>/div></span><br> )<br>}<br></code> </p> <p>Denne koden bruker Next.js <strong>useRouter</strong>-kroken for å håndtere ruting i applikasjonen ved å definere et ruterobjekt. Når påloggingsknappen klikkes, kaller behandlerfunksjonen <strong>router.push</strong>-metoden for å omdirigere brukeren til påloggingssiden.</p> <h3 id="create-a-login-authentication-page">Opprett en påloggingsautentisering Side</h3> <p>I <strong>pages</strong>-katalogen, opprett en ny fil <strong>Login.js</strong>, og legg deretter til følgende kodelinjer.</p> <pre> <code><span>importer</span> { useSession, signIn, signOut } <span>fra</span> <span>"next-auth/react"</span><br><span>importer</span> { useRouter } <span>fra</span> <span>'neste /router'</span>;<br><span>importer</span> stiler <span>fra</span> <span>'../styles/Login.module.css'</span><p><span>eksport</span> <span>standard</span> <span><span>funksjon</span> < span>Logg på</span>() {<br> <span>const</span> { <span>data</span>: session } = useSession()<br> <span>const</span> router = useRouter();<br> <span>if</span> (session) {<br> <span>return</span> (<br> </p> <div classname="{styles.container}"> <br> <h1 classname="<span">"title">Opprett neste app<<span>/h1></span><br> <div classname="{styles.content}"> <br> <h2> Signert < span>i <span>som</span> {session.user.email} <br><<span>/h2> </span><br> <div classname="{styles.btns}"> <br> <button classname="{styles.button}" onclick="{()"> router.push(<span>'/Profile'< /span>)}><br> Brukerprofil<br> <<span>/button></span><br> <button classname="{styles.button}" onclick="{()"> {<br> signOut()<br> }}><br> Logg av<br> <<span>/button></span> <br> <<span>/div></span><br> <<span>/div></span><br> <<span>/div></span><p><code> )<br> <br> <span>retur</span> (<br> <div classname="{styles.container}"> <br> <h1 classname="<span">"title">Opprett neste app<<span>/h1></span><br> <div classname="{styles.content}"> <br> <h2> Du er ikke logget <span>på</span>!!<<span>/h2></span><br> <button classname="{styles.button}<br/"> onClick={() => logIn()}>Sign <span>i</span><<span>/button></span><br> <<span>/div></span><br> <<span>/div></span>< br/> )<br>} <p><strong>useSession</strong>, <strong>signIn</strong> og <strong>signOut</strong> er kroker levert av <strong>next-auth</strong>. <strong>useSession</strong>-kroken brukes til å få tilgang til det gjeldende brukersesjonsobjektet når en bruker logger på og er autentisert av Google.</p> <p>Dette lar Next.js opprettholde autentiseringstilstanden og gjengi brukerdetaljene på klientsiden av appen, i dette tilfellet e-post.</p> <p>I tillegg kan du ved å bruke øktobjektet enkelt bygge tilpassede brukerprofiler for applikasjonen din og lagre dataene i en database som f.eks. som PostgreSQL. Du kan <span>koble en PostgreSQL-database med Next.js-applikasjonen din ved å bruke Prisma</span>.</p> <p>LoggOut-kroken lar en bruker logge av applikasjonen. Denne kroken vil slette øktobjektet som ble opprettet under påloggingsprosessen, og brukeren vil bli logget av.</p> <p>Fortsett og snurr opp utviklingsserveren til oppdater endringene og gå over til Next.js-applikasjonen som kjører på nettleseren for å teste autentiseringsfunksjonaliteten.</p> <pre> <code>npm run dev</code> </pre> <p>Videre kan du <span>bruke Tailwind CSS med Next.js-appen</span> for å style autentiseringsmodellene.</p> <h2 id="authentication-using-nextauth"> Autentisering med NextAuth h2> </h2> <p>NextAuth støtter flere autentiseringstjenester som enkelt kan integreres i Next.js-applikasjonene dine for å håndtere klientsiden autentisering.</p> <p>I tillegg kan du integrere en database for å lagre brukernes data og tilgangstoken for å implementere serversiden autentisering for påfølgende autentiseringsforespørsler siden NextAuth gir støtte for ulike databaseintegrasjoner.</p> </button> </h2> </div> </h1> </div></code></p></button></span></button> </div> </h2> </div> </h1> </div></code></pre></lenke>