Authentification avec Laravel Sanctum
Émettre et valider des jetons d’API avec Sanctum pour les clients SPA et mobiles.
Authentification avec Laravel Sanctum est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Qu’est-ce que Sanctum ?
Laravel Sanctum fournit un système simple d’authentification par jetons pour les SPA et les clients mobiles. Il prend en charge à la fois les jetons d’API et l’authentification par session pour les SPA propriétaires.
Installation de Sanctum
Installez et configurez Sanctum.
$ composer require laravel/sanctum
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrateÉmission de jetons
Générez un jeton d’accès personnel pour un utilisateur après avoir vérifié ses identifiants.
<?php
Route::post("/login", function (Request $request) {
$request->validate(["email" => "required", "password" => "required"]);
$user = User::where("email", $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
throw ValidationException::withMessages([
"email" => ["The provided credentials are incorrect."],
]);
}
$token = $user->createToken("mobile-app")->plainTextToken;
return response()->json(["token" => $token]);
});Trait HasApiTokens
Ajoutez le trait HasApiTokens à votre modèle User pour activer la gestion des jetons.
<?php
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
}Protection des routes
Utilisez l’intergiciel auth:sanctum pour protéger les routes API.
<?php
// routes/api.php
Route::middleware("auth:sanctum")->group(function () {
Route::get("/user", fn(Request $r) => $r->user());
Route::apiResource("posts", PostController::class);
});Envoi du jeton
Les clients envoient le jeton dans l’en-tête d’autorisation en tant que jeton Bearer.
# HTTP header:
Authorization: Bearer 1|AbCdEf1234567890...Portées des jetons (capacités)
Attribuez des capacités aux jetons pour limiter les actions qu’ils peuvent effectuer.
<?php
// Create token with abilities:
$token = $user->createToken("mobile", ["read:posts", "write:comments"])->plainTextToken;
// Check ability:
if ($user->tokenCan("write:comments")) {
// allowed
}Révocation des jetons
Supprimez un jeton précis ou tous les jetons (pour déconnecter tous les appareils).
<?php
// Revoke current token (logout):
$request->user()->currentAccessToken()->delete();
// Revoke all tokens (logout everywhere):
$request->user()->tokens()->delete();Expiration des jetons
Définissez l’expiration des jetons dans config/sanctum.php. Les jetons sont vérifiés par rapport à last_used_at et à la période d’expiration.
// config/sanctum.php
"expiration" => 60 * 24 * 7, // 7 days in minutesAuthentification des SPA
Pour les SPA du même domaine, Sanctum peut utiliser l’authentification par session plutôt que des jetons. Appelez d’abord /sanctum/csrf-cookie, puis utilisez la connexion normale.
Sanctum ou Passport
Sanctum : jetons d’API simples et authentification des SPA. Passport : serveur OAuth2 complet avec codes d’autorisation, identifiants client et jetons d’actualisation. Commencez par Sanctum ; ne passez à Passport que si vous avez besoin d’OAuth2.
Résumé
Sanctum émet des jetons Bearer pour l’authentification des API. Ajoutez HasApiTokens au modèle User. Protégez les routes avec auth:sanctum. Révoquez les jetons lors de la déconnexion. Utilisez les capacités pour limiter les permissions.
Vérification rapide
Comment un client inclut-il un jeton Sanctum dans ses requêtes API ?
Questions Fréquemment Posées
La leçon « Authentification avec Laravel Sanctum » est-elle gratuite ?
Oui — le texte complet de « Authentification avec Laravel Sanctum » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Authentification avec Laravel Sanctum » ?
Émettre et valider des jetons d’API avec Sanctum pour les clients SPA et mobiles. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Authentification avec Laravel Sanctum » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Routes d’API et contrôleurs de ressources
- Ressources d’API et réponses JSON
- Authentification avec Laravel Sanctum
- Limitation du débit et versionnement d’API