Skip to main content

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.
Dabei geschieht automatisch:
  • 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.
Jetzt stehen Methoden wie $user->createToken() und Beziehungen wie $user->tokens zur Verfügung.

API-Token-Authentifizierung

Token-Ablauf

Token ausstellen

Mit createToken() 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.
In der Datenbank wird der Token als SHA-256-Hash abgelegt.

Scopes (Abilities) setzen

Durch Abilities (Scopes) grenzen Sie die Operationen ein, die mit einem Token möglich sind.
Innerhalb der Request-Verarbeitung prüfen Sie die Scopes.

Scopes per Middleware prüfen

Registrieren Sie Middleware-Aliase in bootstrap/app.php.
Und binden Sie sie an Routen.

Token-Gültigkeit

Standardmäßig laufen Sanctum-Tokens nie ab. In config/sanctum.php legen Sie unter expiration eine Gültigkeit in Minuten fest.
Auch pro Token lässt sich eine Gültigkeit angeben.
Wenn Sie eine Gültigkeit setzen, sollten Sie abgelaufene Tokens regelmäßig entfernen.

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.
Für die SPA-Authentifizierung müssen SPA und API dieselbe Top-Level-Domain haben (unterschiedliche Subdomains sind erlaubt). Zudem sollten Requests die Header Accept: application/json und Referer bzw. Origin enthalten.

Sanctum-Middleware aktivieren

Aktivieren Sie in bootstrap/app.php statefulApi().

First-Party-Domains konfigurieren

Tragen Sie die SPA-Domains in config/sanctum.php unter stateful ein.

CORS konfigurieren

Wenn die API von einer anderen Subdomain aufgerufen wird, benötigen Sie CORS-Einstellungen.
Setzen Sie in config/cors.php supports_credentials auf true.
Auch das Frontend-axios muss angepasst werden.
Und vergessen Sie nicht die Cookie-Domain.

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 Middleware auth: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 mit Sanctum::actingAs() und geben die zu prüfenden Abilities an.

Zusammenfassung

Trait HasApiTokens im User-Modell:
  • 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.
Zuletzt geändert am 13. Juli 2026