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
All checks were successful
Deploy miriamgemeinde / deploy (push) Successful in 6s
This commit is contained in:
11
src/axios.js
11
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');
|
||||
|
||||
@@ -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: [],
|
||||
|
||||
Reference in New Issue
Block a user