// ./services/api.js
import axios from 'axios';
// Проверим в самом начале, есть ли токен в хранилище
const JWTToken = localStorage.getItem('jwt');
// Создать инстанс axios
const api = axios.create({
baseURL: `${BASE_URL}/api`;
});
function apiSetHeader (name, value) {
if (value) {
api.defaults.headers[name] = value;
}
};
// Если токен есть, то добавим заголовок к запросам
if (JWTToken) {
apiSetHeader('Authorization', `Bearer ${JWTToken}`);
}
api.interceptors.request.use(config => {
// Если пользователь делает запрос и у него нет заголовка с токеном, то...
if (!config.defaults.headers['Authorization']) {
// Тут пишем редирект если не авторизован
}
return config;
}, error => {
return Promise.reject(error);
});
export default api;
export apiSetHeader
// ./services/sign-in.js
import api, { apiSetHeader } from './api'
export const authorize = async (username, password) => {
try {
const { data } = await api.post('/clients/token/', {
username,
password
});
localStorage.setItem('jwt', data.access);
apiSetHeader('Authorization', `Bearer ${data.access}`);
} catch (error) {
console.log(error);
}
};
Ну, примерно так, если ничего не напутал. Писал на коленке. Могут быть синтаксические ошибки))
В целом, я показал суть, вы же, можете переписать это под себя и свои нужны.