Skip to main content

Cos’è Sanctum

Laravel Sanctum è un pacchetto di autenticazione leggero per SPA, applicazioni mobili e API semplici. Senza conoscenze approfondite di OAuth puoi emettere e gestire più API token per utente. Sanctum risolve due problemi.
Per API chiamate dalla tua SPA usa l’autenticazione SPA. Per app mobili o integrazioni terze usa l’autenticazione con API token. Puoi usarne solo una.

Quando usare Passport

Se devi essere un provider OAuth2 per servizi esterni, scegli Passport; per il resto Sanctum è sufficiente.

Installazione e configurazione

Installazione

Installa laravel/sanctum, pubblica la migration di personal_access_tokens ed esegue le migration.

Trait HasApiTokens

Aggiungi il trait a User.
Ora hai $user->createToken() e $user->tokens.

Autenticazione con API token

Flusso

Emettere un token

createToken() restituisce plainTextToken. Il token in chiaro non viene salvato: restituiscilo subito al client.
Nel DB è salvato con hash SHA-256.

Scope (abilities)

Verifica gli scope:

Middleware per scope

In bootstrap/app.php:

Scadenza dei token

Di default nessuna scadenza. In config/sanctum.php expiration in minuti.
Per token:
Prune periodico:

Revocare token


Autenticazione SPA

Con cookie di sessione, senza gestione token. Ideale per frontend proprie.
SPA e API devono condividere lo stesso dominio (i sottodomini possono differire). Le richieste devono includere Accept: application/json e Referer o Origin.

Attiva il middleware Sanctum

In bootstrap/app.php:

Domini first-party

CORS

Frontend axios:
Sessione cookie:

Flusso di login SPA

1

Ottieni il cookie CSRF

2

Login

3

Richieste autenticate


Protezione delle route

Applica auth:sanctum.

Esempio: API di login e restituzione del token

1

Endpoint di login

2

Route autenticate

3

Chiamate dal client


Test

Con Sanctum::actingAs() autentichi e definisci gli scope.

  • API token: client senza sessione (mobile, terze parti, CLI).
  • SPA: frontend Vue/React/Next.js sullo stesso dominio. Più sicura, no token da gestire.
Ultima modifica il 13 luglio 2026