Implementierung einer passwortlosen Anmeldung in einem Next.js 13-Projekt mit NextAuth.js und Prisma

Aktualisiert auf September 24, 2024 13 Minuten gelesen

Implementierung einer passwortlosen Anmeldung in einem Next.js 13-Projekt mit NextAuth.js und Prisma

In diesem Artikel werden die Schritte erläutert, die zum Implementieren der passwortlosen Authentifizierung in einem Next.js-Projekt mithilfe der NextAuth.js-Bibliothek erforderlich sind. Darüber hinaus werden wir Prisma als Datenbankadapter verwenden, um dies zu erreichen.

Die passwortlose Authentifizierung ist ein innovativer Ansatz, der herkömmliche Kombinationen aus Benutzername und Passwort überflüssig macht. Stattdessen bietet es ein sichereres und benutzerfreundlicheres Authentifizierungserlebnis durch die Nutzung alternativer Methoden wie E-Mail-Magic-Links oder per SMS gesendete Einmalcodes.

Next.js ist ein beliebtes React-Framework zum Erstellen von Webanwendungen, das für seine Einfachheit und Effizienz bekannt ist. Wir können die passwortlose Authentifizierung problemlos in unser Projekt integrieren, indem wir NextAuth.js integrieren, eine Authentifizierungsbibliothek, die explizit für Next.js entwickelt wurde.

Darüber hinaus werden wir uns auf Prisma als Datenbankadapter verlassen. Prisma ist ein ORM-Tool (Object-Relational Mapping), das Datenbankinteraktionen vereinfacht, indem es einen typsicheren und automatisch generierten Abfrage-Builder bereitstellt. Es unterstützt mehrere Datenbanken, darunter PostgreSQL, MySQL und SQLite, was es zu einer vielseitigen Wahl für unsere Authentifizierungsimplementierung macht.

In diesem Leitfaden geben wir Schritt-für-Schritt-Anleitungen zum Einrichten und Konfigurieren der kennwortlosen Authentifizierung mithilfe von NextAuth.js in einem Next.js-Projekt. Wir werden auch zeigen, wie wir Prisma als unseren Datenbankadapter integrieren und so eine nahtlose Kommunikation zwischen unserer Anwendung und der Datenbank ermöglichen.

Wir werden nun untersuchen, wie wir die Sicherheit und Benutzererfahrung unserer Next.js-Anwendung mithilfe der passwortlosen Authentifizierung und den Funktionen von NextAuth.js und Prisma verbessern können. Fangen wir an.

Was ist eine passwortlose Anmeldung?

Die passwortlose Anmeldung ist, wie der Name schon sagt, eine Authentifizierungsmethode, die herkömmliche Kombinationen aus Benutzername und Passwort überflüssig macht. Stattdessen nutzt es alternative Mittel zur Überprüfung der Identität eines Benutzers, wie zum Beispiel magische E-Mail-Links oder per SMS gesendete Einmalcodes. Dieser Ansatz bietet mehrere Vorteile gegenüber herkömmlichen Anmeldemethoden. Erstens wird das Risiko passwortbezogener Schwachstellen wie schwache Passwörter oder die Wiederverwendung von Passwörtern eliminiert. Zweitens vereinfacht es die Benutzererfahrung, da es nicht mehr nötig ist, sich komplexe Passwörter zu merken und einzugeben.

Um eine passwortlose Anmeldung über E-Mail-Magic-Links oder Einmalcodes zu implementieren, benötigen wir einen SMTP-Server (Simple Mail Transfer Protocol).

Für den Versand von E-Mails über das Internet ist ein SMTP-Server zuständig. Im Rahmen der passwortlosen Authentifizierung sendet der Server die magischen Links oder Einmalcodes an die registrierte E-Mail-Adresse des Benutzers. Wenn ein Benutzer den Anmeldevorgang initiiert, wird eine E-Mail mit einem eindeutigen Link oder Code generiert und an den Benutzer gesendet. Der Benutzer kann dann auf den Link klicken oder den Code eingeben, um den Authentifizierungsprozess abzuschließen. Der SMTP-Server fungiert als Vermittler zwischen der Anwendung und dem E-Mail-Dienst des Benutzers und gewährleistet die sichere und zuverlässige Zustellung von Authentifizierungsnachrichten. Durch die Verwendung eines SMTP-Servers können wir die passwortlose Anmeldung effektiv implementieren und unseren Benutzern eine nahtlose Authentifizierungserfahrung bieten.

Lasst uns anfangen!

Zuerst müssen wir ein neues Next.js-Projekt generieren. Verwenden Sie dazu den folgenden Befehl:

npx create-next-app@latest

Generating a new NextJS project

Sobald Sie das neue Next.js-Projekt generiert haben, können Sie zum neu erstellten Projektverzeichnis navigieren.

Wenn Sie das Verzeichnis in das Projekt ändern, können Sie die verschiedenen Ordner und Dateien erkunden, aus denen die Projektstruktur von Next.js besteht.

Project Structure

Das Verständnis der Projektstruktur ist für die effektive Entwicklung und Organisation Ihrer Next.js-Anwendung von entscheidender Bedeutung. Durch den Verweis auf die offizielle Dokumentation können Sie Best Practices nutzen und Einblicke in die Strukturierung Ihres Codes, die Verwaltung statischer Assets usw. gewinnen Erstellen Sie wiederverwendbare Komponenten.

Installation unserer Abhängigkeiten

Um die passwortlose Authentifizierung in unserem Next.js-Projekt mithilfe von NextAuth.js zu ermöglichen, müssen wir zunächst die erforderlichen Abhängigkeiten installieren. Führen Sie den Befehl „yarn add next-auth nodemailer“ aus, um sowohl NextAuth.js als auch nodemailer zu unserem Projekt hinzuzufügen.

Wir verwenden speziell Nodemailer, da es ein beliebtes und vielseitiges Modul zum Versenden von E-Mails in Node.js ist. Es bietet eine unkomplizierte und zuverlässige Möglichkeit, die für die passwortlose Authentifizierung erforderlichen magischen Links oder Einmalcodes per E-Mail zu versenden.

Als nächstes integrieren wir Prisma als unseren Datenbankadapter. Beginnen Sie mit der Installation der erforderlichen Prisma-Pakete mit dem folgenden Befehl:

yarn add @prisma/client @next-auth/prisma-adapter

Diese Pakete ermöglichen eine nahtlose Kommunikation zwischen unserer Next.js-Anwendung und der Datenbank. Darüber hinaus müssen wir Prisma auch als Entwicklungsabhängigkeit installieren, indem wir Folgendes ausführen:

yarn add prisma --dev

Dieser Schritt stellt sicher, dass wir über die notwendigen Tools verfügen, um mit Prisma und seinem automatisch generierten Abfrage-Builder für Datenbankinteraktionen zu arbeiten.

Durch die Installation dieser Abhängigkeiten legen wir den Grundstein für die Implementierung der passwortlosen Authentifizierung mithilfe von NextAuth.js und Prisma in unserem Next.js-Projekt.

Prisma einrichten

Für die passwortlose Authentifizierung in einem Next.js-Projekt ist es erforderlich, Prisma einzurichten und Zugriff auf einen SMTP-Server für den E-Mail-Versand zu haben. Dieses Tutorial führt Sie durch die Verwendung Ihres persönlichen Gmail-Kontos zum Senden von E-Mails. Befolgen Sie die folgenden Schritte für eine erfolgreiche Einrichtung.

Erstellen Sie zunächst einen Ordner „prisma“ im Stammverzeichnis Ihres Projekts. In diesem Ordner befinden sich die Prisma-bezogenen Dateien und Konfigurationen. Erstellen Sie dann im Ordner „prisma“ eine neue Datei mit dem Namen „schema.prisma“. Die Schemadatei definiert die Struktur Ihrer Datenbank und dient als Blaupause für den automatisch generierten Code von Prisma.

Wenn Sie mit dem Konzept eines Schemas noch nicht vertraut sind, machen Sie sich keine Sorgen! Ein Schema gibt die Tabellen, Felder, Beziehungen und Einschränkungen Ihrer Datenbank an. Um das Schema zu erstellen, können Sie auf die offizielle Dokumentation von NextAuth.js verweisen und das dort bereitgestellte Beispielschema kopieren. Dieses Schema ist ein Ausgangspunkt und kann an Ihre Anwendungsanforderungen angepasst werden.

Schema file

Erstellen Sie als Nächstes eine „.env“-Datei im Stammverzeichnis Ihres Projekts. In dieser Datei werden Ihre Umgebungsvariablen gespeichert, einschließlich der erforderlichen Konfigurationen für Ihren SMTP-Server. Um die Datei „.env“ zu füllen, können Sie die unten bereitgestellten Beispielkonfigurationen kopieren. Geben Sie unbedingt Ihre Gmail-Kontoanmeldeinformationen und SMTP-Servereinstellungen in die entsprechenden Felder ein.

EMAIL_SERVER_USER="YourGmailAddress"
EMAIL_SERVER_PASSWORD="GmailPassOrGeneratedPass"
EMAIL_SERVER_HOST=smtp.gmail.com
EMAIL_SERVER_PORT=587
EMAIL_FROM="noreply@example.com"

NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=ThisNeedsToBeSuperSecret

Wenn Sie diese Schritte ausführen, haben Sie Prisma eingerichtet und den SMTP-Server für den E-Mail-Versand über Ihr Gmail-Konto konfiguriert. Diese Vorbereitungen sind entscheidend für die Aktivierung des passwortlosen Authentifizierungsflusses in Ihrem Next.js-Projekt.

Notiz

Sie müssen ein App-Passwort erstellen, wenn Sie die Zwei-Faktor-Authentifizierung (2FA) für Ihr Google-Konto aktiviert haben. Ein App-Passwort ist ein eindeutiges Passwort, das Zugriff auf bestimmte Apps oder Geräte gewährt, ohne dass das Passwort Ihres primären Google-Kontos preisgegeben wird. Befolgen Sie die nachstehenden Anweisungen, um ein App-Passwort zu generieren.

  1. Rufen Sie die Seite mit den Google-Kontoeinstellungen auf, indem Sie https://myaccount.google.com/ besuchen.

  2. Navigieren Sie zur Registerkarte „Sicherheit“.

  3. Suchen Sie nach dem Abschnitt „2FA“, scrollen Sie nach unten und wählen Sie „App-Passwörter“.

Google Account Security

Google Account Security

  1. Zur Sicherheitsüberprüfung werden Sie möglicherweise aufgefordert, das Passwort Ihres Google-Kontos erneut einzugeben.

  2. Wählen Sie im Dropdown-Menü „App auswählen“ „Mail“ oder „Andere (benutzerdefinierter Name)“ aus.

  • Wenn die Option „Mail“ verfügbar ist, wählen Sie sie aus.

  • Wenn die Option „Mail“ nicht verfügbar ist, wählen Sie „Andere (benutzerdefinierter Name)“ und geben Sie zur Identifizierung einen benutzerdefinierten Namen ein.

  1. Klicken Sie auf die Schaltfläche „Generieren“ bzw. „Passwort generieren“.

  2. Google generiert ein eindeutiges App-Passwort für Sie. Notieren Sie sich dieses Passwort, da wir es in unserer Anwendung zum Versenden von E-Mails verwenden werden.

  3. Verwenden Sie dieses generierte App-Passwort in der SMTP-Serverkonfiguration Ihrer Next.js-Anwendung. Ersetzen Sie Ihr reguläres Gmail-Kontopasswort durch dieses App-Passwort.

Dadurch wird sichergestellt, dass Ihre Anwendung auch bei aktivierter 2FA sicher E-Mails über Ihr Gmail-Konto senden kann.

PostgreSQL mit Supabase

Bevor wir fortfahren können, müssen wir sicherstellen, dass die Datenbank für unser Projekt ordnungsgemäß funktioniert. Für diese Demo empfehlen wir die Verwendung der Supabase PostgreSQL-Datenbank. Um mit einem Supabase-Projekt zu beginnen und die PostgreSQL-Verbindungs-URL zu erhalten, führen Sie die folgenden Schritte aus:

  1. Gehen Sie zu supabase.io und melden Sie sich bei Ihrem Konto an oder erstellen Sie ein neues, falls Sie noch keins haben.

  2. Sobald Sie angemeldet sind, werden Sie zum Supabase-Dashboard weitergeleitet. Klicken Sie auf „Neues Projekt erstellen“, um ein neues Projekt zu starten.

  3. Benennen Sie Ihr Projekt und wählen Sie die Region aus, die Ihrem aktuellen Standort am nächsten liegt. Merken Sie sich Ihr Passwort, Sie werden es später benötigen.

  4. Wenn Sie das Projekt erstellt haben, werden Sie zum Projekt-Dashboard weitergeleitet. Klicken Sie in der linken Seitenleiste auf „Datenbank“, um auf die Datenbankeinstellungen zuzugreifen.

  5. Im Abschnitt „Datenbank“ finden Sie die PostgreSQL-Verbindungs-URL. Diese URL enthält alle notwendigen Informationen, um eine Verbindung zur Datenbank Ihres Supabase-Projekts herzustellen, z. B. Host, Port, Datenbankname, Benutzername und Passwort. Es wird im Format angezeigt: postgres://<Benutzername>:<Passwort>@<Host>:<Port>/<Datenbank>

Postgresql connection string

  1. Kopieren Sie die PostgreSQL-Verbindungs-URL und bewahren Sie sie sicher auf. Sie benötigen es, um eine Verbindung zwischen Ihrer Anwendung und der Supabase-Datenbank herzustellen.
    // .env
    
    DATABASE_URL=postgresql://postgres:[Password]@db.ixjsisbwdafsjvgifliu.supabase.co:5432/postgres
    ```

Stellen wir nun sicher, dass wir unseren Prisma-Client generieren, indem wir den folgenden Befehl ausführen: „npx prisma generic“.

Der Prisma-Client ist ein Datenbank-Client, der automatisch basierend auf Ihrem Schema generiert wird. Standardmäßig wird der Prisma-Client im Ordner „node_modules/.prisma/client“ generiert, Sie können jedoch [bei Bedarf einen benutzerdefinierten Speicherort angeben](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client#using-a-custom-output-path).

Als Nächstes erstellen wir unsere erste Migration. Führen Sie den folgenden Befehl aus: „npx prisma migrate dev“. Sie können jeder Migration einen beschreibenden Namen geben.

In Prisma ist eine Migration eine Methode, mit der Sie im Laufe der Zeit Anpassungen an Ihrem Datenbankschema verwalten können. Damit können Sie Ihre Datenbankstruktur ändern, ohne bereits vorhandene Daten zu verlieren. Diese Migrationen sind von entscheidender Bedeutung, da sie sicherstellen, dass Ihr Datenbankschema bei Änderungen an den Anforderungen Ihrer Anwendung ausgerichtet ist. Mit dem Migrationstool von Prisma können Sie diese Änderungen bequem versionieren, anwenden und rückgängig machen, was die Teamarbeit vereinfacht und ein einheitliches Datenbankschema über verschiedene Umgebungen hinweg aufrechterhält.

Wenn wir nun unsere Datenbank überprüfen, können wir die Änderungen seit unserer ersten Migration sehen, die sich im Datenbankabschnitt widerspiegeln.

Durch die Durchführung der ersten Migration haben wir die im Migrationsskript definierten Änderungen auf unser Datenbankschema angewendet.

![Database Tables after Migration](https://drive.google.com/uc?export=view&id=1PZ6ban5h4VZs3UHQoJS_5kNYkhqs-MAx)

### Einrichten von NextAuthJS mit Prisma Adapter

In einer Next.js-Anwendung verwendet NextAuthJS die Catch-All-Route, auch Wildcard- oder Fallback-Route genannt, um Authentifizierungsanfragen zu verwalten. Diese dynamische Route wird mithilfe des dateibasierten Routingsystems in Next.js definiert.

Erstellen Sie einen Ordner mit dem Namen „**api**“ in Ihrem „**app**“-Verzeichnis. Erstellen Sie im Ordner „**api**“ einen Ordner „**auth**“. Erstellen Sie im Ordner „**auth**“ eine Catch-All-Route mit dem Namen „**[...nextauth]**“ als Ordner. Erstellen Sie abschließend eine Datei „**route.ts**“ im Catch-All-Route-Ordner und fügen Sie den folgenden Code hinzu.

```jsx
// app/api/auth/[...nextauth]/route.ts
import { PrismaAdapter } from '@next-auth/prisma-adapter';
import { PrismaClient } from '@prisma/client';
import NextAuth from 'next-auth';
import EmailProvider from 'next-auth/providers/email';

const prisma = new PrismaClient();

export const authOptions = {
  adapter: PrismaAdapter(prisma),
  providers: [
    EmailProvider({
      server: {
        host: process.env.EMAIL_SERVER_HOST,
        port: process.env.EMAIL_SERVER_PORT,
        auth: {
          user: process.env.EMAIL_SERVER_USER,
          pass: process.env.EMAIL_SERVER_PASSWORD,
        },
      },
      from: process.env.EMAIL_FROM,
    }),
  ]
};

const handler = NextAuth(authOptions);

export { handler as GET, handler as POST };

In der Catch-All-Route-Datei importieren wir die NextAuthJS-Bibliothek und richten die Authentifizierungsoptionen, Anbieter und Konfigurationen ein. NextAuthJS übernimmt die Analyse eingehender Anfragen, identifiziert die erforderliche Authentifizierungsaktion und führt die entsprechende Logik gemäß den angegebenen Optionen aus.

Der bereitgestellte Code richtet NextAuthJS mit dem Prisma-Adapter für die Authentifizierung über einen E-Mail-Anbieter ein. Lassen Sie uns jede Aussage erklären:

  1. Importe:
  • PrismaAdapter und PrismaClient werden aus @next-auth/prisma-adapter bzw. @prisma/client importiert. Diese werden verwendet, um NextAuthJS mit Prisma zu integrieren.

  • NextAuth wird aus next-auth importiert und ist die Hauptbibliothek für die Authentifizierung in Next.js-Anwendungen.

  • EmailProvider wird aus next-auth/providers/email importiert und als Anbieter für die E-Mail-basierte Authentifizierung verwendet.

  1. Prisma-Setup:
  • Eine Instanz von PrismaClient wird mit new PrismaClient() erstellt. Dies ermöglicht die Kommunikation mit dem Prisma ORM und der zugrunde liegenden Datenbank.
  1. Authentifizierungsoptionen:
  • authOptions ist ein Objekt, das die Konfiguration für die Authentifizierung in NextAuthJS definiert.

  • Die Eigenschaft adapter ist auf PrismaAdapter(prisma) gesetzt, wodurch NextAuthJS mit Prisma über den PrismaAdapter verbunden wird.

  • Das Array providers enthält einen einzelnen Anbieter, EmailProvider. Es wird mit den erforderlichen E-Mail-Serverdetails und der Absender-E-Mail-Adresse konfiguriert.

  1. NextAuth-Handler:

– Die Funktion NextAuth wird mit authOptions als Argument aufgerufen, wodurch ein Authentifizierungshandler erstellt wird.

  • Der resultierende Handler wird der Variablen handler zugewiesen.
  1. Exportieren:
  • handler wird als GET und POST exportiert, um sowohl HTTP-GET- als auch POST-Anfragen zu unterstützen.

Lassen Sie uns nun unseren Server ausführen und die Funktionalität testen. Starten Sie zunächst den Entwicklungsserver, indem Sie „yarn dev“ ausführen. Öffnen Sie als Nächstes Ihren Browser und besuchen Sie „localhost:3000“, um die Anwendung in Aktion zu sehen.

Um die Authentifizierungsfunktion zu testen, besuchen Sie „localhost:3000/api/auth/signin“. Hier erleben Sie die Magie von NextAuthJS. Die in NextAuthJS enthaltene Vorlage ermöglicht einen passwortlosen Anmeldevorgang. Geben Sie zum Ausprobieren eine gültige E-Mail-Adresse ein.

Passwordless Signin Input

Sobald Sie die E-Mail übermittelt haben, kümmert sich NextAuthJS um den Prozess hinter den Kulissen. Zunächst wird eine E-Mail mit einem eindeutigen Anmeldelink generiert und an die angegebene E-Mail-Adresse gesendet. Dieser Link dient als sicheres Authentifizierungstoken für den Benutzer. Wenn der Benutzer dann auf den Link klickt, validiert NextAuthJS das Token und authentifiziert den Benutzer.

Signin Email

Diese passwortlose Anmeldefunktion erhöht die Sicherheit und das Benutzererlebnis, da keine Passwörter erforderlich sind. Benutzer können schnell und sicher auf ihre Konten zugreifen, indem sie einfach auf den per E-Mail erhaltenen Link klicken. Es rationalisiert den Anmeldevorgang und verringert das Risiko von Sicherheitslücken im Zusammenhang mit Passwörtern.

Wenn ein Benutzer auf die von NextAuthJS generierte Anmelde-E-Mail klickt und sich authentifiziert, finden im Hintergrund mehrere Aktionen statt, um ein nahtloses Anmeldeerlebnis zu ermöglichen.

1. E-Mail-Link-Validierung: Wenn der Benutzer auf den Anmeldelink klickt, validiert NextAuthJS das im Link eingebettete Authentifizierungstoken. Dieses Token gewährleistet die Sicherheit und Integrität des Authentifizierungsprozesses.

2. Authentifizierungsprozess: Nach erfolgreicher Token-Validierung identifiziert NextAuthJS den Benutzer und schließt den Authentifizierungsprozess ab. Es überprüft die Identität des Benutzers anhand des bereitgestellten Tokens und aller zusätzlich konfigurierten Authentifizierungsfaktoren, wie z. B. der Multi-Faktor-Authentifizierung.

3. Sitzungserstellung: Nach erfolgreicher Authentifizierung erstellt NextAuthJS eine Sitzung für den Benutzer. Eine Sitzung ist ein dauerhafter Zustand, der den Authentifizierungsstatus des Benutzers darstellt und ihm den Zugriff auf geschützte Ressourcen ermöglicht, ohne dass er sich für nachfolgende Anforderungen erneut authentifizieren muss.

4. Cookies: NextAuthJS setzt sichere reine HTTP-Cookies im Browser des Benutzers, um die Sitzung zu verwalten. Diese Cookies spielen eine entscheidende Rolle bei der Aufrechterhaltung des Authentifizierungsstatus des Benutzers über mehrere Anfragen hinweg. Zu den Cookies gehören in der Regel ein Sitzungscookie und optional ein Aktualisierungstoken-Cookie, abhängig von der Authentifizierungskonfiguration.

Cookies Set By NextAuthJS

  1. Sitzungscookie: Das Sitzungscookie enthält eine Sitzungskennung (z. B. eine zufällig generierte Zeichenfolge), die die Sitzung des Benutzers eindeutig identifiziert. Es hilft NextAuthJS, nachfolgende Anfragen der richtigen Sitzung und dem richtigen Benutzer zuzuordnen.

  2. CSRF-Token-Cookie: NextAuthJS setzt ein CSRF-Token-Cookie (Cross-Site Request Forgery), um vor CSRF-Angriffen zu schützen. Das CSRF-Token ist ein eindeutiger Wert, der von NextAuthJS generiert und im Cookie gespeichert wird. Es wird verwendet, um die Authentizität nachfolgender Anfragen des Benutzers zu validieren und zu verifizieren. Wenn der Benutzer Formulare sendet oder vertrauliche Aktionen ausführt, wird das CSRF-Token in die Anforderungsheader oder den Anforderungstext eingefügt, um sicherzustellen, dass die Anforderung aus der Sitzung des authentifizierten Benutzers und nicht aus einer böswilligen Quelle stammt.

  3. Callback-URL-Cookie: NextAuthJS setzt ein Callback-URL-Cookie, um die ursprüngliche URL zu speichern, auf die der Benutzer zuzugreifen versuchte, bevor er zum Authentifizierungsfluss umgeleitet wurde. Dieses Cookie hilft NextAuthJS, den Benutzer nach erfolgreicher Authentifizierung wieder auf die gewünschte Seite umzuleiten. Es gewährleistet ein reibungsloses Benutzererlebnis, indem es den Benutzer nahtlos zu seinem beabsichtigten Ziel zurückführt, anstatt zu einer generischen Zielseite.

Durch die Verwendung sicherer reiner HTTP-Cookies stellt NextAuthJS sicher, dass der Authentifizierungsstatus sicher und manipulationssicher bleibt. Die Cookies sind verschlüsselt und verhindern so den unbefugten Zugriff oder die Änderung durch böswillige Akteure.

Tolle Arbeit bei der erfolgreichen Integration von NextAuthJS mit Prisma-Adapter in Ihre Next.js-Anwendung! Dank der Einfachheit und Anpassungsfähigkeit von NextAuthJS verfügen Sie jetzt über ein zuverlässiges Authentifizierungssystem.

Schauen Sie sich das unten verlinkte GitHub-Repository für den in diesem Handbuch verwendeten Code an: https://github.com/codelabsacademy/next-auth-guide.

Aber warum hier aufhören? Wenn Sie eine Leidenschaft für die Webentwicklung haben und Ihre Fähigkeiten verbessern möchten, sollten Sie sich für unser Webentwicklungs-Bootcamp bewerben. Unser Bootcamp bietet eine umfassende Lernerfahrung und stattet Sie mit dem Wissen und den praktischen Fähigkeiten aus, die Sie benötigen, um in der dynamischen Welt der Webentwicklung erfolgreich zu sein.

Durch die Teilnahme an unserem Bootcamp sammeln Sie praktische Erfahrungen mit Spitzentechnologien, arbeiten an realen Projekten und erhalten persönliche Beratung von Branchenexperten. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, unser Programm ist darauf ausgelegt, Ihre Webentwicklungsfähigkeiten auf die nächste Stufe zu heben.

Verpassen Sie nicht diese Gelegenheit, Ihre Webentwicklungsreise zu beschleunigen. Bewerben Sie sich noch heute für unser Webentwicklungs-Bootcamp und entfalten Sie Ihr volles Potenzial im spannenden Bereich der Webentwicklung. Lassen Sie uns gemeinsam erstaunliche digitale Erlebnisse schaffen und die Zukunft des Webs gestalten.