Deutsch
  • nextjs
  • app-router
  • server-actions
  • sdk

Füge Logto-Authentifizierung zu deiner Next.js-Anwendung mit Server-Aktionen hinzu

Integriert Logto-Authentifizierung in deine Next.js-Anwendung mit Server-Aktionen.

Sijie
Sijie
Developer

Server-Aktionen stellen eine aktualisierte Methode dar, um robuste Webanwendungen ohne traditionelle REST-APIs zu erstellen. Wir haben dies bereits in unserem Artikel diskutiert.

Heute freuen wir uns, die offizielle Unterstützung für Server-Aktionen in unserem Next.js-SDK bekannt zu geben, obwohl es sich um ein experimentelles Feature handelt.

Für einen kurzen Überblick, wirf einen Blick auf dieses Beispiel und folge unserer Anleitung, um Logto mit Server-Aktionen zu integrieren.

Voraussetzungen

Um loszulegen, stelle sicher, dass du Folgendes hast:

  • Eine laufende Logto-Instanz oder Zugriff auf ein Logto-Cloud-Konto.
  • Ein Next.js-Projekt mit aktiviertem Server-Aktionen-Feature.

Logto konfigurieren

Wenn du Logto selbst hostest, lese in der Logto-"Erste Schritte"-Dokumentation nach, wie du deine Logto-Instanz einrichtest.

Öffne die Logto-Konsole, indem du die URL https://cloud.logto.io/ eingibst, wenn du Logto Cloud nutzt, oder den Endpunkt, den du für das Selbsthosting eingerichtet hast.

Navigiere als nächstes zum Tab "Applications" und klicke auf "Create application".

Applications tab

Wähle im erscheinenden Modal "Next.js (App Router)" und gib einen Anwendungsnamen an, z. B. "Next.js App". Klicke dann auf "Create application".

Create application

Du wirst auf eine Tutorial-Seite in Logto weitergeleitet. Klicke auf "Finish and done", um zur Seite mit den Anwendungsdetails zu gelangen.

Applications details

Im Abschnitt "Redirect URIs" gibst du den folgenden Wert ein:

Zum Beispiel, wenn du Next.js auf http://localhost:3000 hostest, sollte der Wert sein:

Save changes

Klicke auf den "Save Changes"-Button unten. Erfolgreich, halte diese Seite offen, da sie für die Next.js-Konfiguration nützlich sein wird.

Next.js-Anwendung einrichten

Stelle sicher, dass du ein Projekt mit der neuesten Version von Next.js hast. Falls nicht, kannst du die offizielle Installationsanleitung befolgen, um eines zu erstellen.

Zum Zeitpunkt des Schreibens dieser Anleitung ist das Feature experimentell und muss in der next.config.js aktiviert werden

Definiere die Logto-Bibliothek

Beginne mit der Installation des @logto/next-Moduls mit npm wie folgt:

Du kannst auch yarn oder pnpm verwenden.

Erstelle dann einige Funktionen als "Server-Aktionen", erstelle die neue Datei libraries/logto.ts:

In dieser Datei exportieren wir vier Funktionen zu Authentifizierungszwecken. Beachte die erste Zeile, "use server" gibt an, dass der Code in der Datei nur auf der Serverseite ausgeführt werden kann. Wir verwenden "next/headers", um cookie-basierte Sitzungen zu verwalten.

Die oben exportierten Funktionen können direkt von der Client-Seite React-Komponente aufgerufen werden. Das ist der Hauptvorteil der Verwendung von Server-Aktionen. Gehen wir zum nächsten Kapitel, um zu sehen, wie man diese Funktionen nutzt.

Implementiere Anmelde- und Abmeldebuttons

Mit den Authentifizierungsfunktionen zur Hand, lass uns die Seite konstruieren. Wir erstellen zwei Client-Komponenten, um die An- und Abmeldeaktionen einzuleiten.

Anmelden

/app/sign-in.tsx:

Hier importieren wir die signIn-Funktion, die im vorherigen Kapitel definiert wurde. Obwohl der Code auf der Serverseite ausgeführt wird, kann diese Funktion dennoch direkt von der <button>-Komponente aufgerufen werden, wenn ein Benutzer auf den Anmeldebutton klickt. Dadurch vermeiden wir das Schreiben einer REST-API, um den Anmeldeprozess zu verwalten. Tatsächlich behandelt Next.js das "POST"-Anforderungsdispatcher-Details für uns. Nach Erhalt der redirectUrl können wir router.push aufrufen, um zur Logto-Anmeldeseite weiterzuleiten.

Abmelden

/app/sign-out.tsx:

Der Abmeldeprozess ist ähnlich wie der Anmeldeprozess.

Bereite eine Callback-Seite vor

Als standardmäßiger OIDC-Identitätsanbieter leitet Logto Benutzer nach der Authentifizierung zu einer Callback-URL weiter. Daher müssen wir eine Callback-Seite vorbereiten, um das Anmeldeergebnis zu verarbeiten.

/app/callback/page.tsx

Hier verwenden wir eine Client-Komponente mit useEffect, die es einfach macht, eine „Lade“-Seite für ein besseres Benutzererlebnis anzuzeigen.

Benutzerkontext anzeigen und Seite schützen

Jetzt machen wir eine minimalistische Startseite, um die Nützlichkeit des Logto-SDK zu zeigen. Wenn nötig, schütze jede Ressource vor unbekannten Benutzern, indem du den Wert isAuthenticated prüfst und zur Anmeldeseite weiterleitest oder Fehlermeldungen anzeigst.

app/page.tsx

Wie du sehen kannst, handelt es sich um eine Server-Komponente, die es überflüssig macht, useEffect und komplexe Zustandsänderungen zu verwalten.

Fazit

Server-Aktionen bieten eine vereinfachte und unkomplizierte Möglichkeit, die Authentifizierung im Vergleich zu traditionellen Next.js-Anwendungen, die auf REST-APIs beruhen, zu implementieren.

Der gesamte Beispielcode kann in diesem Repository gefunden werden: https://github.com/logto-io/js/tree/master/packages/next-server-actions-sample

Warum nicht Logto Cloud ausprobieren und die Einfachheit in Aktion erleben?