2017-09-06 5 views
0

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 AuthorizationBearer korrekt eingestellt. Wenn userAuth(); ein Rückruf ist, wird AuthorizationBearer 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?

Antwort

Verwandte Themen