Ta biblioteka umożliwia bezproblemową integrację uwierzytelniania Google z aplikacją Next.js, eliminując potrzebę tworzenia jej od podstaw.
Integracja bezpiecznego systemu uwierzytelniania to kluczowy krok w rozwoju, który nie tylko zapewnia bezpieczne środowisko dla użytkowników, ale także budzi zaufanie do Twojego produktu. System ten gwarantuje, że ich dane są chronione, a dostęp do aplikacji mają tylko upoważnione osoby.
Tworzenie bezpiecznego uwierzytelniania od podstaw może być czasochłonnym procesem, który wymaga gruntownej analizy zrozumienie protokołów i procesów uwierzytelniania, zwłaszcza podczas obsługi różnych uwierzytelnień dostawcy.
Korzystając z NextAuth, możesz skupić się na budowaniu podstawowych funkcji. Czytaj dalej, aby dowiedzieć się, jak zintegrować logowanie społecznościowe Google w swojej aplikacji za pomocą NextAuth.
Jak działa NextAuth
NextAuth.js to biblioteka uwierzytelniania typu open source, która upraszcza proces dodawania uwierzytelnianie i autoryzacja funkcjonalność do aplikacji Next.js, a także dostosowywanie przepływów pracy uwierzytelniania. Zapewnia szereg funkcji, takich jak poczta e-mail, uwierzytelnianie bez hasła i wsparcie dla różnych dostawców uwierzytelniania, takich jak Google, GitHub i innych.
Na wysokim poziomie NextAuth działa jako oprogramowanie pośrednie, ułatwiając proces uwierzytelniania między Twoją aplikacją a dostawcą. Pod maską, gdy użytkownik próbuje się zalogować, jest przekierowywany na stronę logowania Google. Po pomyślnym uwierzytelnieniu Google zwraca ładunek zawierający dane użytkownika, takie jak imię i nazwisko oraz adres e-mail. Dane te służą do autoryzacji dostępu do aplikacji i jej zasobów.
Korzystając z danych ładunku, NextAuth tworzy sesję dla każdego uwierzytelnionego użytkownika i przechowuje token sesji w bezpiecznym pliku cookie obsługującym tylko protokół HTTP. Token sesji służy do weryfikacji tożsamości użytkownika i zachowania jego statusu uwierzytelnienia. Ten proces dotyczy również innych dostawców z niewielkimi różnicami we wdrażaniu.
Zarejestruj swoją aplikację Next.js w Google Developer Console
NextAuth zapewnia obsługę usługi uwierzytelniania Google. Jednak aby Twoja aplikacja mogła wchodzić w interakcję z interfejsami API Google i umożliwiać użytkownikom uwierzytelnianie swoich danych logowania Google, musisz zarejestrować swoją aplikację w konsoli programisty Google i uzyskanie Identyfikator klienta I Sekret klienta.
Aby to zrobić, przejdź do Konsola programisty Google. Następnie zaloguj się na swoje konto Google, aby uzyskać dostęp do konsoli. Po zalogowaniu utwórz nowy projekt.
Na stronie przeglądu projektu wybierz API i usługi kartę z listy usług w lewym okienku menu i wreszcie plik Referencje opcja.
Kliknij na Utwórz dane uwierzytelniające przycisk, aby wygenerować swój identyfikator klienta i klucz tajny klienta. Następnie określ typ aplikacji z podanych opcji, a następnie podaj nazwę swojej aplikacji.
Następnie określ adres URL trasy domowej aplikacji i na koniec określ identyfikator URI autoryzowanego przekierowania dla aplikacji. W tym przypadku tak powinno być http://localhost: 3000/api/auth/callback/google zgodnie z ustawieniami dostawcy Google NextAuth.
Po udanej rejestracji firma Google przekaże Ci identyfikator klienta i klucz tajny klienta do wykorzystania w Twojej aplikacji.
Skonfiguruj aplikację NextJS
Aby rozpocząć, utwórz lokalnie projekt Next.js:
npx utwórz-następną-aplikację następną-aplikację-uwierzytelniania
Po zakończeniu instalacji przejdź do nowo utworzonego katalogu projektu i uruchom to polecenie, aby uruchomić serwer deweloperski.
npm uruchom dev
Otwórz przeglądarkę i przejdź do http://localhost: 3000. To powinien być oczekiwany wynik.
Możesz znaleźć kod tego projektu w jego Repozytorium GitHub.
Konfigurowanie pliku .env
W folderze głównym projektu utwórz nowy plik i nadaj mu nazwę .env przechowywać Twój identyfikator klienta, klucz tajny i podstawowy adres URL.
NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'Identyfikator klienta'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'sekret'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
Adres URL NextAUTH służy do określenia podstawowego adresu URL Twojej aplikacji, który służy do przekierowywania użytkowników po zakończeniu uwierzytelniania.
Zintegruj NextAuth ze swoją aplikacją Next.js
Najpierw zainstaluj bibliotekę NextAuth w swoim projekcie.
npm zainstaluj następną autoryzację
Dalej, w /pages katalogu, utwórz nowy folder i nadaj mu nazwę interfejs API. Zmień katalog na interfejs API folder i utwórz inny folder o nazwie autoryzacja W folderze auth dodaj nowy plik i nadaj mu nazwę [...następne uwierzytelnienie].js i dodaj następujące wiersze kodu.
import DalejAuth z„następna autoryzacja/następna”;
import Dostawca Google z„next-auth/providers/google”;
eksportdomyślny Następna autoryzacja({
dostawcy:[
Dostawca Google({
identyfikator klienta: proces.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
ClientSecret: proces.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]
});
Ten kod konfiguruje Google jako dostawcę uwierzytelniania. Funkcja NextAuth definiuje obiekt konfiguracji dostawcy Google, który przyjmuje dwie właściwości: identyfikator klienta i klucz tajny klienta, który inicjuje dostawcę.
Następnie otwórz pages/_app.js plik i wprowadź następujące zmiany w kodzie.
import„../style/globals.css”
import { Dostawca sesji } z„następna autoryzacja/reakcja”
funkcjonowaćMojaAplikacja({ Komponent, właściwości strony: { sesja,... właściwości strony } }) {
powrót (
</SessionProvider>
)
}
eksportdomyślny MojaAplikacja
DalejAuth's Dostawca sesji zapewnia funkcję zarządzania stanem uwierzytelniania dla aplikacji Next.js. To zajmuje sesja prop, który zawiera dane sesji uwierzytelniania zwrócone z interfejsu API Google, w tym dane użytkownika, takie jak jego identyfikator, adres e-mail i token dostępu.
Zawijając MojaAplikacja komponentu z komponentem SessionProvider udostępniany jest obiekt sesji uwierzytelniania ze szczegółami użytkownika w całej aplikacji, umożliwiając aplikacji utrwalanie i renderowanie stron na podstawie ich stanu uwierzytelnienia.
Skonfiguruj plik index.js
Otworzyć strony/index.js plik, usuń kod wzorcowy i dodaj poniższy kod, aby utworzyć przycisk logowania, który kieruje użytkowników do strony logowania.
import Głowa z„następny / głowa”
import style z„../style/Home.module.css”
import { useRouter } z„następny/router”;eksportdomyślnyfunkcjonowaćDom() {
konst router = użyj routera ();
powrót (
Utwórz następną aplikację</title>
"description" content="Wygenerowane przez utworzenie następnej aplikacji" />
"icon" href="/favicon.ico" />
</Head>
Witamy w " https://nextjs.org">Next.js!</a>
</h1>
Zacznij od zalogowania się w{' ' }
z Twoim kontem Google</code>
</div>
)
}
Ten kod wykorzystuje hak Next.js useRouter do obsługi routingu w aplikacji poprzez zdefiniowanie obiektu routera. Po kliknięciu przycisku logowania funkcja obsługi wywołuje metodę router.push w celu przekierowania użytkownika do strony logowania.
Utwórz uwierzytelnianie logowania Strona
W katalogu pages utwórz nowy plik Login.js, a następnie dodaj następujące wiersze kodu.
importuj { useSession, zaloguj się, wyloguj } z "next-auth/react"
importuj { useRouter } z 'następny /router';
importuj style z '../styles/Login.module.css'eksportuj domyślnie funkcja < span>Zaloguj się() {
stała { dane: sesja } = useSession()
const router = useRouter();
if (sesja) {
return (
"title">Utwórz następną aplikację</h1>
Podpisano < span>w jako {session.user.email}
</h2>