← Retour au blog
LaravelReactJWTSécurité

Authentification JWT sécurisée avec Laravel et React

Soufiane BoutatssSoufiane Boutatss
·15 février 2026·8 min de lecture

JWT : Comment ça fonctionne ?

Un JSON Web Token (JWT) est un token signé encodant des informations (claims) sur l'utilisateur. Il se compose de trois parties : header, payload et signature — encodés en base64 et séparés par des points.

Laravel côté backend

Laravel Sanctum ou tymon/jwt-auth permettent de générer et valider des tokens JWT. À la connexion réussie, le serveur retourne un access token (courte durée) et un refresh token (longue durée) :

// Connexion
public function login(Request $request)
{
    if (!$token = auth()->attempt($request->only('email', 'password'))) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }
    return $this->respondWithToken($token);
}

Stockage sécurisé côté React

Le stockage des tokens est critique pour la sécurité. Les cookies HttpOnly sont préférables au localStorage car inaccessibles via JavaScript, protégeant contre les attaques XSS.

Axios Interceptors

Les interceptors Axios ajoutent automatiquement le token à chaque requête et gèrent le refresh automatique quand l'access token expire :

axios.interceptors.request.use(config => {
  config.headers.Authorization = `Bearer ${getToken()}`;
  return config;
});

Protection des routes React

Un composant PrivateRoute vérifie la validité du token et redirige vers la page de login si l'utilisateur n'est pas authentifié. La vérification doit aussi se faire côté serveur.

Refresh Token Flow

Quand l'access token expire (401), l'interceptor utilise le refresh token pour obtenir un nouveau access token de façon transparente, sans déconnecter l'utilisateur.

Conclusion

Une authentification JWT bien implémentée offre sécurité et flexibilité pour les applications SPA. La combinaison Laravel + React avec des cookies HttpOnly représente aujourd'hui le standard de l'industrie pour les APIs REST sécurisées.

Soufiane Boutatss

Soufiane Boutatss

Développeur Web & Mobile — React, React Native, Laravel, Next.js

Me contacter