Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Ein axios-Interceptor für das JWT

Ein axios-Interceptor für das JWT

~13 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026

Kapitel 76 speichert den Token, aber SCHICKT ihn noch NICHT mit – ein Request-Interceptor fügt den Authorization-Header AUTOMATISCH zu JEDEM ausgehenden Request hinzu, GENAU wie in Kapitel 50 per Hand mit curl -H.

Den Interceptor registrieren

src/api/client.ts
import axios from 'axios';

export const apiClient = axios.create({
  baseURL: import.meta.env.VITE_API_URL,
  headers: {
    'Content-Type': 'application/ld+json',
  },
});

apiClient.interceptors.request.use((config) => {
  const token = localStorage.getItem('token');

  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }

  return config;
});

JEDER Aufruf über apiClient (auch der BEREITS in Kapitel 75 geschriebene useProjects-Hook, OHNE ihn anfassen zu müssen) erhält AB JETZT AUTOMATISCH den Header, FALLS ein Token vorhanden ist.

Achtung: Direkter localStorage-Zugriff IM Interceptor (statt über useAuth()) ist eine BEWUSSTE Ausnahme: Interceptors laufen AUSSERHALB des React-Komponentenbaums und können KEINE Hooks nutzen – localStorage bleibt hier die PRAGMATISCHE, funktionierende Lösung.

401-Antworten global abfangen

apiClient.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response?.status === 401) {
      localStorage.removeItem('token');
      window.location.href = '/login';
    }

    return Promise.reject(error);
  },
);

EIN Response-Interceptor fängt 401 (Kapitel 50: fehlendes/abgelaufenes Token) GLOBAL ab – JEDE Komponente profitiert AUTOMATISCH von einer Weiterleitung zur Login-Seite, OHNE dass JEDE einzelne useQuery-Instanz das SELBST behandeln müsste.

Das vollständige Verhalten testen

NACH dem Login (Kapitel 76) zeigt ProjectListPage (Kapitel 75) JETZT WIRKLICH Daten – der TOKEN wird AUTOMATISCH mitgeschickt, GENAU wie im curl-Beispiel aus Kapitel 50, aber OHNE dass DIESE Komponente selbst IRGENDETWAS über Authentifizierung wissen muss.

Tipp: DIESE Trennung (Komponenten kennen NUR die API-Endpunkte, der Interceptor kümmert sich UM Authentifizierung) ist ein GÄNGIGES Muster – ÄNDERT sich SPÄTER die Auth-Strategie (z. B. Umstieg auf HTTP-only-Cookies), muss NUR der Interceptor angepasst werden, KEINE einzelne Komponente.