Mit dieser Bibliothek können Sie die Google-Authentifizierung nahtlos in Ihre Next.js-Anwendung integrieren, sodass Sie sie nicht von Grund auf neu entwickeln müssen.
Die Integration eines sicheren Authentifizierungssystems ist ein entscheidender Entwicklungsschritt, der nicht nur eine sichere Umgebung für Benutzer bietet, sondern auch Vertrauen in Ihr Produkt schafft. Dieses System stellt sicher, dass ihre Daten geschützt sind und nur autorisierte Personen auf die Anwendung zugreifen können.
Der Aufbau einer sicheren Authentifizierung von Grund auf kann ein zeitaufwändiger Prozess sein, der eine gründliche Prüfung erfordert Verständnis von Authentifizierungsprotokollen und -prozessen, insbesondere beim Umgang mit unterschiedlichen Authentifizierungen Anbieter.
Mit NextAuth können Sie sich auf den Aufbau der Kernfunktionen konzentrieren. Lesen Sie weiter, um zu erfahren, wie Sie Google Social Login mit NextAuth in Ihre Anwendung integrieren.
Wie funktioniert NextAuth?
WeiterAuth.js ist eine Open-Source-Authentifizierungsbibliothek, die das Hinzufügen vereinfacht
Authentifizierung und Autorisierung Funktionalität für Next.js-Anwendungen sowie das Anpassen von Authentifizierungs-Workflows. Es bietet eine Reihe von Funktionen wie E-Mail, passwortlose Authentifizierung und Unterstützung für verschiedene Authentifizierungsanbieter wie Google, GitHub und mehr.Auf hoher Ebene fungiert NextAuth als Middleware und erleichtert den Authentifizierungsprozess zwischen Ihrer Anwendung und dem Anbieter. Unter der Haube wird ein Benutzer, wenn er versucht, sich anzumelden, auf die Anmeldeseite von Google umgeleitet. Bei erfolgreicher Authentifizierung gibt Google eine Nutzlast zurück, die die Daten des Benutzers enthält, wie z. B. seinen Namen und seine E-Mail-Adresse. Diese Daten werden verwendet, um den Zugriff auf die Anwendung und ihre Ressourcen zu autorisieren.
Unter Verwendung der Nutzlastdaten erstellt NextAuth eine Sitzung für jeden authentifizierten Benutzer und speichert das Sitzungstoken in einem sicheren Nur-HTTP-Cookie. Das Sitzungstoken wird verwendet, um die Identität des Benutzers zu überprüfen und seinen Authentifizierungsstatus beizubehalten. Dieser Prozess gilt auch für andere Anbieter mit geringfügigen Abweichungen in der Implementierung.
Registrieren Sie Ihre Next.js-Anwendung in der Google Developer Console
NextAuth bietet Unterstützung für den Google-Authentifizierungsdienst. Damit Ihre Anwendung jedoch mit Google-APIs interagieren und Benutzern die Authentifizierung ermöglichen kann ihre Google-Anmeldeinformationen müssen Sie Ihre App in der Google-Entwicklerkonsole registrieren und erhalten ein Kunden ID Und Client-Geheimnis.
Navigieren Sie dazu zu Google Developer Console. Melden Sie sich als Nächstes mit Ihrem Google-Konto an, um auf die Konsole zuzugreifen. Erstellen Sie nach der Anmeldung ein neues Projekt.
Wählen Sie auf der Übersichtsseite des Projekts die aus APIs und Dienste Registerkarte aus der Liste der Dienste im linken Menübereich und schließlich die Referenzen Möglichkeit.
Klick auf das Anmeldeinformationen erstellen Schaltfläche, um Ihre Client-ID und Ihr Client-Geheimnis zu generieren. Geben Sie als Nächstes den Anwendungstyp aus den angegebenen Optionen an und geben Sie dann einen Namen für Ihre Anwendung ein.
Geben Sie anschließend die Homerouten-URL Ihrer App und schließlich den autorisierten Umleitungs-URI für Ihre Anwendung an. Für diesen Fall sollte es sein http://localhost: 3000/api/auth/callback/google wie in den Google-Anbietereinstellungen von NextAuth angegeben.
Nach erfolgreicher Registrierung stellt Google Ihnen eine Client-ID und ein Client-Secret zur Verwendung in Ihrer App zur Verfügung.
Richten Sie die NextJS-Anwendung ein
Erstellen Sie zunächst lokal ein Next.js-Projekt:
npx create-next-app next-auth-app
Navigieren Sie nach Abschluss der Einrichtung zum neu erstellten Projektverzeichnis und führen Sie diesen Befehl aus, um den Entwicklungsserver hochzufahren.
npm laufen dev
Öffnen Sie Ihren Browser und navigieren Sie zu http://localhost: 3000. Dies sollte das erwartete Ergebnis sein.
Sie finden den Code dieses Projekts in seiner GitHub-Repository.
Einrichten der .env-Datei
Erstellen Sie im Stammordner Ihres Projekts eine neue Datei und benennen Sie sie .env um Ihre Client-ID, Ihr Geheimnis und die Basis-URL zu speichern.
NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'Kunden ID'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'Geheimnis'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
Die NextAUTH-URL wird verwendet, um die Basis-URL Ihrer Anwendung anzugeben, die zum Umleiten von Benutzern verwendet wird, nachdem die Authentifizierung abgeschlossen ist.
Integrieren Sie NextAuth in Ihre Next.js-Anwendung
Installieren Sie zunächst die Bibliothek von NextAuth in Ihrem Projekt.
npm installiere next-auth
Als nächstes im /pages Verzeichnis, erstellen Sie einen neuen Ordner und benennen Sie ihn API. Wechseln Sie in das Verzeichnis API Ordner und erstellen Sie einen weiteren Ordner namens Authentifizierung Fügen Sie im Ordner auth eine neue Datei hinzu und benennen Sie sie [...nextauth].js und fügen Sie die folgenden Codezeilen hinzu.
importieren NextAuth aus"nächster Autor/nächster";
importieren GoogleProvider aus"next-auth/provider/google";
ExportStandard NextAuth({
Anbieter:[
GoogleProvider({
clientId: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]
});
Dieser Code konfiguriert Google als Authentifizierungsanbieter. Die NextAuth-Funktion definiert das Google-Provider-Konfigurationsobjekt, das zwei Eigenschaften übernimmt: eine Client-ID und ein Client-Secret, das den Provider initialisiert.
Als nächstes öffnen Sie die Seiten/_app.js Datei und nehmen Sie die folgenden Änderungen am Code vor.
importieren'../styles/globals.css'
importieren { Sitzungsanbieter } aus"nächstes authentifizieren/reagieren"
FunktionMeine App({ Komponente, pageProps: { Sitzung, ...pageProps } }) {
zurückkehren (
</SessionProvider>
)
}
ExportStandard Meine App
NextAuths Sitzungsanbieter Die Komponente stellt der Next.js-App Authentifizierungsstatus-Verwaltungsfunktionen bereit. Es dauert ein Sitzung prop, die die von der Google-API zurückgegebenen Authentifizierungssitzungsdaten enthält, die Benutzerdetails wie ID, E-Mail und Zugriffstoken enthalten.
Durch Umhüllen der Meine App Komponente mit der SessionProvider-Komponente wird das Authentifizierungs-Session-Objekt mit Benutzerdetails zur Verfügung gestellt in der gesamten Anwendung, sodass die Anwendung Seiten basierend auf ihrem Authentifizierungsstatus beibehalten und rendern kann.
Konfigurieren Sie die index.js-Datei
Öffne das Seiten/index.js Datei, löschen Sie den Boilerplate-Code und fügen Sie den folgenden Code hinzu, um eine Anmeldeschaltfläche zu erstellen, die Benutzer zu einer Anmeldeseite weiterleitet.
importieren Kopf aus'weiter/Kopf'
importieren Stile aus'../styles/Home.module.css'
importieren {useRouter} aus'weiter/router';ExportStandardFunktionHeim() {
konst router = useRouter();
zurückkehren (
Nächste App erstellen</title>
"description" content="Generated by create next app" />
"icon" href="/favicon.ico" />
</Head>
Willkommen bei " https://nextjs.org">Next.js!</a>
</h1>
Legen Sie los, indem Sie sich anmelden{' ' }
mit Ihrem Google-Konto</code>
</div>
)
}
Dieser Code verwendet den useRouter-Hook von Next.j, um das Routing innerhalb der Anwendung zu handhaben, indem ein Router-Objekt definiert wird. Wenn auf die Anmeldeschaltfläche geklickt wird, ruft die Handler-Funktion die Methode router.push zum Umleiten auf den Benutzer auf die Anmeldeseite.
Erstelle eine Anmeldeauthentifizierung Seite
Erstellen Sie im Verzeichnis pages eine neue Datei Login.js und fügen Sie dann die folgenden Codezeilen hinzu.
importieren { useSession, signIn, signOut } from "next-auth/react"
import { useRouter } from 'next /router';
importiere Stile aus '../styles/Login.module.css'export default function < span>Login() {
const { data: session } = useSession()
const router = useRouter();
if (session) {
return (
"title">Nächste App erstellen</h1>
Signiert < span>in als {session.user.email}
</h2>