Ich arbeite derzeit mit Javascript
und Axios
, auf einer Client-Seite Anwendung. Ich führe eine Axios-Anfrage (refreshToken();
) mit einer anderen axios
Anfrage Rückruf (userAuth();
), in der Antwort der ersten axios
Anfrage erhalte ich ein neues Token. Ich versuche, dieses neue Token in den Headern authorization
Träger meines Rückrufs festzulegen. Das funktioniert nicht: Beim Rückruf (userAuth();
) ist das neue Token nicht gesetzt und in den Headern ist kein Berechtigungsträger mehr gesetzt.Axios Header-Autorisierungsträger fehlt beim Rückruf
Wenn userAuth();
kein Rückruf ist, ist Authorization
Bearer
korrekt eingestellt. Wenn userAuth();
ein Rückruf ist, wird Authorization
Bearer
nicht festgelegt.
let now = new Date();
let time = now.getTime();
time += 3600 * 1000;
now.setTime(time);
const setTokenOnCookie = (token) => {
document.cookie = 'token=' + token + '; expires=' + now.toUTCString();
}
const setRefreshOnCookie = (refresh_token) => {
document.cookie = 'refresh_token=' + refresh_token;
}
const TOKEN_USER = document.cookie.replace(/(?:(?:^|.*;\s*)token\s*\=\s*([^;]*).*$)|^.*$/, "$1");
const REFRESH_TOKEN = document.cookie.replace(/(?:(?:^|.*;\s*)refresh_token\s*\=\s*([^;]*).*$)|^.*$/, "$1");
const refreshToken = (userAuthCallback, userUnauthCallback) => {
axios.post(`${API_URL}/my/url/to/refresh/token`,
'refresh_token='+REFRESH_TOKEN,
{headers:{'Content-Type': 'application/x-www-form-urlencoded'}}
).then(res => {
Promise.all([setTokenOnCookie(res.data.token), setRefreshOnCookie(res.data.refresh_token)])
.then(()=>{
userAuthCallback(res.data.token);
}).catch(err => {
userUnauthCallback();
})
}
const userAuth = (token) => {
if(!token){
token = TOKEN_USER
}
axios.get(`${API_URL}/my/url/to/get/my/user`,
{headers:{'Authorization': `Bearer ${token}`}}
).then(res => {
pushToApplicationPath();
}).catch(err => {
catchMyError();
})
}
const userUnauth =() => {
document.cookie = 'token=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = 'refresh_token=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = 'username=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
pushToLoginPath();
}
refreshToken(userAuth, userUnauth);
Wissen Sie, wo das Problem liegt?