Как сохранить пользовательские параметры при http basic auth?

#javascript #authentication #axios #basic-authentication

#javascript #аутентификация #axios #basic-аутентификация

Вопрос:

Я захожу в удаленный api, базовая аутентификация настроена. Метод авторизации:

 auth() {
const token = Buffer.from(`${email}:${psw}`, 'utf8').toString('base64')
      var config = {
        method: "get",
        url:
          "http://....",
        headers: {
          Authorization: `Basic ${token}`
        }
      };
      axios(config)
        .then(function (response) {
          console.log(JSON.stringify(response.data));
        })
        .catch(function (error) {
          console.log(error);
        })
    }
  

При авторизации через браузер через стандартную форму учетные данные сохраняются и в дальнейшем вы можете получить доступ к серверу без авторизации.
При отправке запроса авторизация также проходит успешно, но если нужно отправить другой запрос, данные авторизации не сохраняются и возникает ошибка:
Не удалось загрузить ресурс: сервер ответил статусом 401 (неавторизованный).
Где сохранить заголовок? Или как правильно организовать работу?

Ответ №1:

При использовании Server-> Server communication нет «сеанса», как у вас в браузерах (обычно реализуется с использованием файлов cookie).

Вам необходимо прикреплять учетные данные в каждом из ваших запросов.

Axios упростите это, настроив «базовые» заголовки с вашими учетными данными, и каждый запрос с экземпляром автоматически прикрепит заголовок.

 const token = Buffer.from(`${email}:${psw}`, 'utf8').toString('base64');
const axios = Axios.create({
  baseURL: '/users-mobile/remote/api',
  headers: { Authorization: `Basic ${token}` },
});

// this `axios` instance will add the headers to all request that are made by it.
  

Комментарии:

1. Хорошо, спасибо. И если страница обновится, вам нужно будет повторно передать данные авторизации? Где я могу сохранить токен? в файлах cookie? Насколько это правильно?

2. Если вариант использования не является связью между сервером и сервером, существуют рекомендации по взаимодействию между браузером и сервером (обычно на основе файлов cookie)

3. Не могли бы вы порекомендовать пример, пожалуйста?

4. Будьте конкретны, пример для чего?

5. Для авторизации на сервере через basic auth.