Skip to main content

Qu’est-ce que Sanctum

Laravel Sanctum est un package d’authentification léger destiné aux SPA, applications mobiles et APIs simples. Sans connaître OAuth, vous pouvez émettre et gérer plusieurs tokens API par utilisateur. Deux problèmes résolus :
Utilisez le mode SPA pour vos SPA maison, et les tokens API pour mobile ou clients tiers. Vous pouvez utiliser un seul mode.

Sanctum vs Passport

Choisissez Passport si vous devez être un fournisseur OAuth2. Sinon, Sanctum suffit à la plupart des applications.

Installation et configuration

Installation

install:api configure Sanctum.
Cette commande :
  • installe laravel/sanctum
  • publie la migration personal_access_tokens
  • exécute la migration

Ajouter le trait HasApiTokens

Ajoutez le trait au modèle User.
Vous disposez alors de $user->createToken(), $user->tokens, etc.

Authentification par token API

Flux

Émission d’un token

createToken() génère un token. plainTextToken contient la version en clair. Elle n’est pas persistée : renvoyez-la immédiatement à l’utilisateur.
Le hash SHA-256 seul est stocké en base.

Portées (abilities)

Restreignez les actions autorisées par le token via des abilities.
Vérifiez à l’exécution :

Vérifier via middleware

Alias dans bootstrap/app.php :
Application aux routes :

Expiration

Par défaut, pas d’expiration. Réglez expiration (minutes) dans config/sanctum.php.
Expiration par token :
Programme la purge :

Révocation


Authentification SPA

Basée sur les cookies de session — pas de gestion de token. Idéal pour votre frontend Vue/React/Next.js maison.
SPA et API doivent partager le même TLD (sous-domaines différents autorisés). Envoyez Accept: application/json et un Referer ou Origin.

Activer le middleware

Dans bootstrap/app.php :

Domaines first-party

Dans config/sanctum.php, réglez stateful.

CORS

Pour un autre sous-domaine :
Dans config/cors.php :
Côté frontend (axios) :
N’oubliez pas le domaine de session :

Flux d’authentification

1

Récupérer le cookie CSRF

Avant de se connecter, initialisez CSRF.
2

Envoyer la requête de login

3

Requêtes authentifiées

Les requêtes suivantes utilisent le cookie de session.

Protéger les routes

auth:sanctum retourne 401 Unauthorized pour les requêtes non authentifiées. Ce middleware unique gère à la fois tokens API et SPA.

Exemple : login API et renvoi d’un token

Cas mobile.
1

Endpoint de login

2

Routes authentifiées

3

Requêtes client


Tests

Utilisez Sanctum::actingAs() pour authentifier avec des abilities.

Récapitulatif

Ajout du trait HasApiTokens :
  • Tokens API : mobile, intégrations tierces, CLI — clients sans session.
  • SPA : Vue/React/Next.js maison sur le même domaine — plus sûr, sans gestion de token.
Dernière modification le 13 juillet 2026