Сохраненный ключ доступа JWT в Cook ie, но все еще не может получить доступ к API - PullRequest
1 голос
/ 27 января 2020

В моем следующем js приложении реагирования у меня есть это для моей страницы входа, чтобы сохранить моего повара ie:

axios
  .post(apiUrl, data)
  .then(response => {
    console.log(response.data);
    const token = response.data.access;
    Cookies.set('jwtCookie', token, { expires: 1 });
    Router.push('/');
    setShowLoading(false);
    props.history.push('/show/' + response.data._id);
  })
  .catch(error => setShowLoading(false));

Я успешно получаю ключ доступа от моего бэкэнда и моего повара ie можно увидеть в разделе «Приложения» инструментов Dev на Chrome.

Однако с этого момента я немного запутался в том, что делать, чтобы разрешить мне доступ к странице, которая требует аутентификации. У меня есть страница, где я делаю запрос на получение, используя ax ios:

const user = await axios
  .get(`http://localhost:8000/api/users/${username}/complete/`, { withCredentials: true })
  .then(function(response) {
    return response.data;
  });

Как мне сообщить моему бэкэнду, что мой ключ доступа хранится в Cook ie с именем jwtCook ie, поэтому что это позволит мне сделать запрос на получение? Я использую Django Rest Framework и установил класс разрешений на этой странице в IsAuthenticated.

Я знаю, что где-то в моих знаниях есть пробел, я надеялся, что кто-нибудь поможет мне преодолеть этот пробел. Спасибо!

1 Ответ

1 голос
/ 27 января 2020

Существует несколько способов аутентификации с помощью вашего API, и DRF поддерживают многие. Вы используете аутентификацию токена, в этом случае вам нужно предоставить токен в заголовке HTTP Authorization.

Вы можете указать глобальный топор ios по умолчанию, например,

axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;

Вы можете установить его при создании экземпляра, подобного этому,

const instance = axios.create({
  baseURL: 'http://localhost:8000/api',
  headers: {'Authorization': AUTH_TOKEN}
});

или после, instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

Аутентификация DRF Выполните c

топор ios До c

...