Was ist Sanctum
Laravel Sanctum ist ein schlankes Authentifizierungspaket für SPAs (Single Page Applications), mobile Apps und einfache APIs. Ohne OAuth-Komplexität lassen sich pro Benutzer mehrere API-Tokens ausstellen und verwalten. Sanctum löst zwei Probleme:Für ein eigenes SPA, das die API aufruft, verwenden Sie die SPA-Authentifizierung. Für mobile Apps oder Dritte, die die API nutzen, die API-Token-Authentifizierung. Sie können auch nur einen der beiden Modi verwenden.
Passport vs. Sanctum
Wenn Sie als OAuth2-Provider für externe Dienste auftreten müssen, wählen Sie Passport. Für die meisten Anwendungen genügt Sanctum.
Installation und Konfiguration
Installation
Ein einziger Artisan-Befehl richtet Sanctum ein.- Installation des Pakets
laravel/sanctum - Veröffentlichung der Migration für die Tabelle
personal_access_tokens - Ausführung der Migration
Trait HasApiTokens hinzufügen
Ergänzen Sie im User-Modell das Trait HasApiTokens.
$user->createToken() und Beziehungen wie $user->tokens zur Verfügung.
API-Token-Authentifizierung
Token-Ablauf
Token ausstellen
MitcreateToken() stellen Sie einen Token aus. Über die Eigenschaft plainTextToken erhalten Sie den Klartext-Token. Der Klartext-Token wird nicht in der Datenbank gespeichert – geben Sie ihn dem Benutzer unmittelbar nach der Erstellung zurück.
Scopes (Abilities) setzen
Durch Abilities (Scopes) grenzen Sie die Operationen ein, die mit einem Token möglich sind.Scopes per Middleware prüfen
Registrieren Sie Middleware-Aliase inbootstrap/app.php.
Token-Gültigkeit
Standardmäßig laufen Sanctum-Tokens nie ab. Inconfig/sanctum.php legen Sie unter expiration eine Gültigkeit in Minuten fest.
Tokens widerrufen
SPA-Authentifizierung
Die SPA-Authentifizierung verwendet Session-Cookies und braucht keine Token-Ausstellung. Sie eignet sich, wenn Ihre eigene Frontend-Anwendung (Vue, React, Next.js …) die API aufruft.Sanctum-Middleware aktivieren
Aktivieren Sie inbootstrap/app.php statefulApi().
First-Party-Domains konfigurieren
Tragen Sie die SPA-Domains inconfig/sanctum.php unter stateful ein.
CORS konfigurieren
Wenn die API von einer anderen Subdomain aufgerufen wird, benötigen Sie CORS-Einstellungen.config/cors.php supports_credentials auf true.
axios muss angepasst werden.
Ablauf der Anmeldung aus dem SPA
1
CSRF-Cookie holen
Vor dem Login den Endpunkt
/sanctum/csrf-cookie aufrufen.2
Login-Request senden
POST-Request an
/login.3
Authentifizierte Requests
Nachfolgende Requests werden automatisch über das Session-Cookie authentifiziert.
Authentifizierte Routen schützen
Mit der Middlewareauth:sanctum erhalten unauthentifizierte Requests 401 Unauthorized. Beide Modi (Token- und SPA-Auth) werden von dieser Middleware abgedeckt.
Praxisbeispiel: Login-API mit Token-Rückgabe
Beispiel für die API-Token-Authentifizierung in einer mobilen App.1
Login-Endpunkt anlegen
2
Authentifizierte Routen
3
Aus dem Client senden
Tests
In Sanctum-Tests authentifizieren Sie mitSanctum::actingAs() und geben die zu prüfenden Abilities an.
- Pest
- PHPUnit
Zusammenfassung
Installationsschritte
Installationsschritte
HasApiTokens im User-Modell:Häufig verwendete APIs
Häufig verwendete APIs
API-Token vs. SPA-Authentifizierung wählen
API-Token vs. SPA-Authentifizierung wählen
- API-Token-Authentifizierung: für Clients ohne Session – mobile Apps, Drittanbieter, CLI-Tools.
- SPA-Authentifizierung: für ein eigenes SPA (Vue/React/Next.js) auf derselben Domain/Subdomain. Sicherer und ohne Token-Verwaltung.