добавить заголовок авторизации к каждому запросу axios - PullRequest
0 голосов
/ 20 июня 2019

Я использую redux-oidc для авторизации, которая сохраняет токен доступа пользователя в хранилище. Я прочитал этот пост о той же проблеме, но она не работает для меня.

До сих пор я пытался подойти к этому 2 разными способами. Сначала я попытался добавить следующее в мой файл App.js (поскольку он является корнем проекта)

if (store.getState().oidc.user && store.getState().oidc.user.access_token) {
token = store.getState().oidc.user.access_token;
setJWTToken(token);
}

, где setJWTToken - это функция:

const setJWTToken = token => {
if (token) {
    axios.defaults.headers.common["Authorization"] = token
} else {
    delete axios.defaults.headers.common["Authorization"];
}
};

но он игнорируется, что и происходит, потому что пользователь не загружается во время начальной загрузки приложения. Итак, я переместил его в файл действий, думая, что на этом этапе пользователю потребуется авторизация

axios.defaults.headers.common["Authorization"] = 
store.getState().oidc.user.access_token;

но я получаю сообщение об ошибке TypeError: Cannot read property 'access_token' of null

Используя инструменты Chatel и Response Dev в Chrome, я вижу, что токен находится в магазине - думаю, у меня просто возникают проблемы с тем, когда его вызывать. Если бы это был компонент, я бы сделал что-то вроде (! User) {return Loading ... но я не хочу делать это на каждой странице. Куда я иду не так?

...