From 654ca224394f6462f0968557e26c8cd656eaff65 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 29 Apr 2026 18:56:23 +0200 Subject: [PATCH] Improve token management in axios.js and store/index.js: Ensure headers are initialized correctly and enhance error handling for 401 responses by checking for stored tokens. Update isLoggedIn state logic to rely solely on token usability, improving authentication reliability. --- src/axios.js | 11 ++++++++++- src/store/index.js | 4 +++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/axios.js b/src/axios.js index 9ff36df..dd9124d 100644 --- a/src/axios.js +++ b/src/axios.js @@ -38,6 +38,7 @@ function isTokenUsable(token) { axios.interceptors.request.use( config => { const token = localStorage.getItem('token'); + config.headers = config.headers || {}; if (token) { if (isTokenUsable(token)) { config.headers.Authorization = `Bearer ${token}`; @@ -61,8 +62,16 @@ axios.interceptors.response.use( const requestUrl = error.config?.url || ''; const isLoginRequest = requestUrl.includes('/auth/login'); const isLogoutRequest = requestUrl.includes('/auth/logout'); + const hasStoredToken = isTokenUsable(localStorage.getItem('token')); + const hadAuthHeader = !!error.config?.headers?.Authorization; - if (error.response && error.response.status === 401 && !isLoginRequest && !isLogoutRequest) { + if ( + error.response && + error.response.status === 401 && + !isLoginRequest && + !isLogoutRequest && + (hasStoredToken || hadAuthHeader) + ) { clearStoredLogin(); if (window.location.pathname !== '/auth/login') { window.location.replace('/auth/login'); diff --git a/src/store/index.js b/src/store/index.js index a33229d..45217e3 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -44,7 +44,9 @@ try { export default createStore({ state: { - isLoggedIn: localStorage.getItem('isLoggedIn') === 'true' && !!usableStoredToken, + // Maßgeblich ist ein vorhandener, brauchbarer Token. + // Das alte isLoggedIn-Flag kann bei Reload/Fehlerfällen veraltet sein. + isLoggedIn: !!usableStoredToken, user: user, token: usableStoredToken, menuData: [],