Debugge und teste dein benutzerdefiniertes UI lokal
Für Logto Cloud-Nutzer haben wir es einfach gemacht, dein eigenes UI zu Logto zu bringen („Bring your own UI“). Cloud-Nutzer können jetzt eine Zip-Datei mit den benutzerdefinierten UI-Assets in Konsole > Anmeldung & Konto > Branding > Bring your UI hochladen (Siehe die Seite Bring your UI für weitere Details.)
Beim Entwickeln solcher benutzerdefinierten UI-Seiten möchten Nutzer jedoch den Code lokal testen und debuggen, bevor sie ihn zu Logto Cloud hochladen. Dieser CLI-Befehl hilft dir, einen lokalen Tunnel einzurichten und die folgenden 3 Entitäten miteinander zu verbinden: deinen Logto Cloud Auth-Endpunkt, deine Anwendung und dein benutzerdefiniertes Anmelde-UI.
Warum brauche ich das?
Standardmäßig wirst du, wenn du in deiner Anwendung auf den „Anmelden“-Button klickst, zur Anmeldeseite weitergeleitet, die am Logto-Endpunkt konfiguriert ist. Ein erfolgreicher Anmeldeablauf kann wie folgt dargestellt werden:
Da du nun aber dein eigenes benutzerdefiniertes Anmelde-UI entwickelst, benötigst du eine Möglichkeit, zu den auf deiner lokalen Maschine laufenden benutzerdefinierten Anmelde-UI-Seiten zu navigieren. Dafür ist ein lokaler Tunnel-Service erforderlich, der die ausgehenden Anfragen deiner Anwendung abfängt und sie zu deinen benutzerdefinierten Anmelde-UI-Seiten umleitet.
Zusätzlich musst du mit der Logto Experience API interagieren, um Benutzer zu authentifizieren und Sitzungen zu verwalten. Dieser Service hilft auch dabei, diese Experience API-Anfragen an Logto Cloud weiterzuleiten, um CORS-Probleme zu vermeiden.
Das folgende Sequenzdiagramm zeigt, wie ein erfolgreicher „Anmelden“-Ablauf mit deinem benutzerdefinierten UI und dem Tunnel-Service funktioniert:
Mit dem Tunnel-Service kannst du jetzt dein benutzerdefiniertes Anmelde-UI lokal entwickeln und testen, ohne die Assets jedes Mal zu Logto Cloud hochladen zu müssen, wenn du eine Änderung vornimmst.
Anleitung
Schritt 1: Führe den Befehl aus
Angenommen, deine Cloud-Tenant-ID ist foobar und du hast eine benutzerdefinierte Anmeldeseite, die auf deinem lokalen Dev-Server unter http://localhost:4000 läuft, dann kannst du den Befehl so ausführen:
- CLI
- npx
logto-tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://foobar.logto.app/
npx @logto/tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://foobar.logto.app/
Es funktioniert auch, wenn du eine benutzerdefinierte Domain in Logto konfiguriert hast:
- CLI
- npx
logto-tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://your.custom.domain/
npx @logto/tunnel -p 9000 --experience-uri http://localhost:4000/ --endpoint https://your.custom.domain/
Alternativ unterstützt der Befehl auch statische HTML-Assets, ohne dass du sie zuerst auf einem Dev-Server ausführen musst. Stelle einfach sicher, dass sich eine index.html im angegebenen Pfad befindet.
- CLI
- npx
logto-tunnel -p 9000 --experience-path /path/to/your/static/files --endpoint https://foobar.logto.app/
npx @logto/tunnel -p 9000 --experience-path /path/to/your/static/files --endpoint https://foobar.logto.app/
Schritt 2: Aktualisiere die Endpunkt-URI in deiner Anwendung
Starte abschließend deine Anwendung und setze deren Logto-Endpunkt stattdessen auf die Tunnel-Service-Adresse http://localhost:9000/.
Nehmen wir eine React-Anwendung als Beispiel:
import { LogtoProvider, LogtoConfig } from '@logto/react';
// endpoint: 'https://foobar.logto.app/', // ursprünglicher Logto Cloud-Endpunkt
const config: LogtoConfig = {
endpoint: 'http://localhost:9000/', // Tunnel-Service-Adresse
appId: '<your-application-id>',
};
const App = () => (
<LogtoProvider config={config}>
<YourAppContent />
</LogtoProvider>
);
Wenn du Social Sign-in verwendest, musst du auch die Redirect-URI in den Einstellungen deines Social-Providers auf die Tunnel-Service-Adresse aktualisieren.
http://localhost:9000/callback/<connector-id>
Wenn alles korrekt eingerichtet ist, solltest du beim Klick auf den „Anmelden“-Button in deiner Anwendung zu deiner benutzerdefinierten Anmeldeseite weitergeleitet werden, anstatt zur integrierten Logto-UI – zusammen mit einer gültigen Sitzung (Cookies), die dir ermöglicht, weiter mit der Logto Experience API zu interagieren.
Viel Spaß beim Coden!
Verwandte Ressourcen
Automatisiere die Bereitstellung deines benutzerdefinierten Anmelde-UIs mit GitHub Actions Workflow