Reputation: 25
How can I pass a token from SecureStore.getItemAsync to axiosInstance headers. getAccessToken() gives me promise, I understand I could do getAccessToken().then(token=>....), but how should I implement it in here?
import axios from 'axios';
import * as SecureStore from 'expo-secure-store'
import { useEffect, useState } from 'react';
const baseURL = 'http://000.000.0.000:8000/api/';
async function getAccessToken(){
await SecureStore.getItemAsync('access_token')
}
const axiosInstance =
axios.create({
baseURL: baseURL,
timeout: 5000,
headers: {
Authorization: getAccessToken()
? 'JWT ' + getAccessToken()
: null,
'Content-Type': 'application/json',
accept: 'application/json',
},
});
axiosInstance.interceptors.response.use(
(response) => {
console.log(response)
return response;
},
);
export default axiosInstance;
Upvotes: 1
Views: 776
Reputation: 96
You can use this to update token.
async function setAccessToken(){
let token=await SecureStore.getItemAsync('access_token')
axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`
}
just call setAccessToken on start of you app or where you want to set Authorization token.
Upvotes: 3
Reputation: 3649
You could use request interceptor.
axios.interceptors.request.use(async req => {
const access_token = await SecureStore.getItemAsync('access_token')
req.headers.authorization = access_token;
return req;
});
Upvotes: 2