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.
All checks were successful
Deploy miriamgemeinde / deploy (push) Successful in 6s

This commit is contained in:
Torsten Schulz (local)
2026-04-29 18:56:23 +02:00
parent 0b58579258
commit 654ca22439
2 changed files with 13 additions and 2 deletions

View File

@@ -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');

View File

@@ -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: [],