Laravel Sanctum
Sommaire
- Introduction
- Tutoriel vidéo
- Pourquoi utiliser l’authentification par cookies ?
- Étapes d’installation et de configuration
- Gestion des erreurs et du CSRF
- Test de l’authentification
- Conclusion
Introduction
Dans cet article nous retraçons ce que j’ai fait en vidéo (voir ci-dessous) et nous allons créer une application API avec Laravel, et explorer le processus d’authentification via Sanctum dans le cadre d’une Single Page Application (SPA). Nous couvrirons les bases de l’installation et de la configuration pour vous authentifier en toute simplicité.
Tutoriel vidéo
Pourquoi utiliser l’authentification par cookies ?
L’authentification via cookies HTTP-only présente plusieurs avantages :
- Sécurité accrue : Les cookies HTTP-only ne sont pas accessibles via JavaScript, limitant ainsi les risques d’attaques XSS.
- Simplicité d’intégration : Sanctum gère automatiquement les sessions, ce qui simplifie la gestion des états utilisateur.
Cela dit, il est important de noter que ce n’est pas une vérité absolue et qu’il existe d’autres approches comme les tokens Bearer. Nous nous concentrerons ici sur une configuration typique utilisant Sanctum.
Étapes d’installation et de configuration
1. Initialisation du projet
Commencez par créer une nouvelle application Laravel :
laravel new my-api --no-interaction
Ensuite, ouvrez le projet dans votre éditeur préféré.
2. Installation de Sanctum
Exécutez la commande suivante pour installer Sanctum :
php artisan install:api
Cette commande :
- Installe Sanctum.
- Configure les routes API dans
routes/api.php
. - Ajoute les middlewares nécessaires pour l’authentification.
3. Configuration des cookies et des domaines
Dans le fichier config/sanctum.php
, configurez le préfixe des routes :
'prefix' => 'api',
Ajoutez également votre domaine frontal dans la clé stateful
:
'domain' => 'localhost:3000',
Assurez-vous que vos cookies sont configurés en mode SameSite=Lax
ou Strict
.
4. Création du système de login
Contrôleur d’authentification
Créez un contrôleur AuthController
:
php artisan make:controller AuthController
Ajoutez une méthode login
dans le contrôleur :
public function login(Request $request)
{
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (Auth::attempt($credentials)) {
$request->session()->regenerate();
return response()->json(['success' => true]);
}
return response()->json([
'message' => 'Wrong credentials'
], 401);
}
Routes
Dans routes/api.php
, ajoutez les routes d’authentification :
use App\Http\Controllers\AuthController;
Route::prefix('auth')->group(function () {
Route::post('/login', [AuthController::class, 'login'])->name('auth.login');
});
5. Gestion des erreurs et du CSRF
Lors des requêtes API, veillez à inclure les headers appropriés pour le format JSON :
Accept: application/json
Pour éviter l’erreur CSRF token mismatch
, récupérez un CSRF token en appelant la route :
GET /api/csrf-cookie
Utilisez ensuite ce token dans vos requêtes suivantes en tant que header X-XSRF-TOKEN
.
6. Test de l’authentification
Créez un utilisateur test avec une commande :
php artisan db:seed
Connectez-vous via un client HTTP comme Postman ou Insomnia :
- Effectuez un GET sur
/api/csrf-cookie
. - Effectuez un POST sur
/api/auth/login
avec les credentials suivants :{ "email": "test@example.com", "password": "password" }
Si tout est configuré correctement, vous obtiendrez une réponse de succès.
Conclusion
Vous avez maintenant une API Laravel fonctionnelle avec une authentification basée sur les cookies et Sanctum. Cette configuration est particulièrement utile pour des SPA sécurisées. Restez connectés pour d’autres vidéos où nous explorerons l’intégration avec des frameworks front-end comme Vue ou Nuxt.
N’hésitez pas à me suivre et à vous abonner à Laravel Jutsu pour plus de contenu !