Ova vam biblioteka omogućuje besprijekornu integraciju Google autentifikacije u vašu Next.js aplikaciju, eliminirajući potrebu da je razvijate od nule.
Integracija sigurnog sustava provjere autentičnosti ključni je razvojni korak koji ne samo da pruža sigurno okruženje za korisnike, već i ulijeva povjerenje u vaš proizvod. Ovaj sustav osigurava da su njihovi podaci zaštićeni i da samo ovlaštene osobe mogu pristupiti aplikaciji.
Izgradnja sigurne autentifikacije od temelja može biti dugotrajan proces koji zahtijeva temeljitu razumijevanje autentifikacijskih protokola i procesa, posebice pri rukovanju različitim autentifikacijskim postupcima pružatelji usluga.
Koristeći NextAuth, možete prebaciti svoj fokus na izgradnju osnovnih značajki. Čitajte dalje kako biste saznali kako integrirati prijavu na Google društvene mreže u svoju aplikaciju koristeći NextAuth.
Kako radi NextAuth
NextAuth.js je knjižnica za provjeru autentičnosti otvorenog koda koja pojednostavljuje postupak dodavanja autentifikacija i autorizacija
funkcionalnost za Next.js aplikacije kao i prilagođavanje tijeka rada provjere autentičnosti. Omogućuje niz značajki kao što su e-pošta, provjera autentičnosti bez lozinke i podrška za razne pružatelje usluga provjere autentičnosti kao što su Google, GitHub i drugi.Na visokoj razini, NextAuth djeluje kao posredni softver, olakšavajući proces autentifikacije između vaše aplikacije i pružatelja usluga. Ispod haube, kada se korisnik pokuša prijaviti, preusmjerava se na Googleovu stranicu za prijavu. Nakon uspješne provjere autentičnosti, Google vraća sadržaj koji uključuje korisničke podatke, poput imena i adrese e-pošte. Ovi se podaci koriste za autorizaciju pristupa aplikaciji i njezinim resursima.
Koristeći korisničke podatke, NextAuth stvara sesiju za svakog autentificiranog korisnika i pohranjuje token sesije u sigurni kolačić samo za HTTP. Token sesije koristi se za provjeru identiteta korisnika i održavanje njegovog statusa provjere autentičnosti. Ovaj se postupak također odnosi na druge pružatelje s malim varijacijama u implementaciji.
Registrirajte svoju Next.js aplikaciju na Google Developer Console
NextAuth pruža podršku za Google uslugu autentifikacije. Međutim, kako bi vaša aplikacija mogla komunicirati s Google API-jima i omogućiti korisnicima provjeru autentičnosti njihove Google vjerodajnice, morat ćete registrirati svoju aplikaciju na Google konzoli za razvojne programere i dobiti a ID klijenta i Tajna klijenta.
Da biste to učinili, idite na Google Developer Console. Zatim se prijavite sa svojim Google računom za pristup konzoli. Nakon što se prijavite, kreirajte novi projekt.
Na stranici s pregledom projekta odaberite API-ji i usluge s popisa usluga u lijevom oknu izbornika i na kraju, vjerodajnice opcija.
Klikni na Stvorite vjerodajnice gumb za generiranje ID-a klijenta i Tajne klijenta. Zatim odredite vrstu aplikacije iz danih opcija, a zatim navedite naziv za svoju aplikaciju.
Nakon toga navedite URL početne rute svoje aplikacije i na kraju navedite ovlašteni URI za preusmjeravanje za svoju aplikaciju. Za ovaj slučaj bi trebalo biti http://localhost: 3000/api/auth/callback/google kako je navedeno u postavkama Google davatelja usluge NextAuth.
Nakon uspješne registracije, Google će vam dati ID klijenta i tajnu klijenta za upotrebu u vašoj aplikaciji.
Postavite aplikaciju NextJS
Za početak kreirajte projekt Next.js lokalno:
npx create-next-app next-auth-app
Nakon što je postavljanje dovršeno, idite do novostvorenog direktorija projekta i pokrenite ovu naredbu da biste pokrenuli razvojni poslužitelj.
npm run dev
Otvorite svoj preglednik i idite na http://localhost: 3000. Ovo bi trebao biti očekivani rezultat.
Kôd ovog projekta možete pronaći u GitHub spremište.
Postavljanje .env datoteke
U korijenskoj mapi vašeg projekta stvorite novu datoteku i dajte joj naziv .env za čuvanje vašeg ID-a klijenta, tajne i osnovnog URL-a.
NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'ID klijenta'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'tajna'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
URL NextAUTH koristi se za određivanje osnovnog URL-a vaše aplikacije, koji se koristi za preusmjeravanje korisnika nakon dovršetka autentifikacije.
Integrirajte NextAuth u svoju aplikaciju Next.js
Najprije instalirajte knjižnicu NextAuth-a u svoj projekt.
npm instaliraj next-auth
Dalje, u /pages imenik, stvorite novu mapu i dajte joj naziv api. Promijenite direktorij u api mapu i stvorite drugu mapu pod nazivom auth. U auth mapu dodajte novu datoteku i dajte joj naziv [...nextauth].js i dodajte sljedeće retke koda.
uvoz NextAuth iz"sljedeća auth/sljedeća";
uvoz GoogleProvider iz"next-auth/providers/google";
izvozzadano NextAuth({
pružatelji usluga: [
GoogleProvider({
clientId: proces.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: proces.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]
});
Ovaj kod konfigurira Google kao davatelja autentifikacije. Funkcija NextAuth definira konfiguracijski objekt Google davatelja koji ima dva svojstva: ID klijenta i tajnu klijenta koja inicijalizira davatelja.
Zatim otvorite stranice/_app.js datoteku i napravite sljedeće promjene u kodu.
uvoz'../styles/globals.css'
uvoz {SessionProvider} iz"next-auth/react"
funkcijaMyApp({ Komponenta, pageProps: { session, ...pageProps } }) {
povratak (
</SessionProvider>
)
}
izvozzadano MyApp
NextAuth's SessionProvider komponenta pruža funkciju upravljanja stanjem provjere autentičnosti aplikaciji Next.js. Potrebno je a sjednica prop koji sadrži podatke o sesiji provjere autentičnosti vraćene iz Googleovog API-ja koji uključuju podatke o korisniku kao što su njihov ID, e-pošta i pristupni token.
Umotavanjem u MyApp komponentu s komponentom SessionProvider, objekt sesije provjere autentičnosti s detaljima o korisniku postaje dostupan u cijeloj aplikaciji, omogućujući aplikaciji da traje i prikazuje stranice na temelju njihovog stanja provjere autentičnosti.
Konfigurirajte datoteku index.js
Otvori stranice/index.js datoteku, izbrišite predložak koda i dodajte kod u nastavku da biste stvorili gumb za prijavu koji usmjerava korisnike na stranicu za prijavu.
uvoz glava iz'sljedeća/glava'
uvoz stilovi iz'../styles/Home.module.css'
uvoz {useRouter} iz'sljedeći/usmjerivač';izvozzadanofunkcijaDom() {
konst usmjerivač = useRouter();
povratak (
Stvori sljedeću aplikaciju</title>
"description" content="Generirano stvaranjem sljedeće aplikacije" />
"icon" href="/favicon.ico" />
</Head>
Dobro došli u " https://nextjs.org">Next.js!</a>
</h1>
Započnite prijavom u{' ' }
s vašim Google računom</code>
</div>
)
}
Ovaj kôd koristi Next.js useRouter kuku za rukovanje usmjeravanjem unutar aplikacije definiranjem objekta usmjerivača. Kada se klikne gumb za prijavu, funkcija rukovatelja poziva metodu router.push za preusmjeravanje korisnika na stranicu za prijavu.
Stvorite autentifikaciju za prijavu Stranica
U direktoriju pages kreirajte novu datoteku Login.js, zatim dodajte sljedeće retke koda.
import { useSession, signIn, signOut } from "next-auth/react"
import { useRouter} from 'next /router';
uvezi stilove iz '../styles/Login.module.css'izvoz zadana funkcija < span>Prijava() {
const { podaci: sesija } = useSession()
const router = useRouter();
if (sesija) {
return (
"title">Stvori sljedeću aplikaciju</h1>
Potpisano < span>u kao {session.user.email}
</h2>