Аутентификация на предъявителя в React

Как я могу использовать аутентификацию на предъявителя с суперагентом в React? Я не уверен в синтаксисе и не могу найти пример.

Что я делаю сейчас

   showTransactionList = () => {
        superagent
            .post('http://193.124.114.46:3001/api/protected/transactions')
            .set({'Authorization': 'Bearer ' + this.state.id_token})
            .accept('application/json')
            .then(res => {
                const posts = JSON.stringify(res.body);
                console.info(posts);
            })
            .catch((err) => {
                console.info(err);
                throw err;                    
            });
    }

Спасибо!

Когда я пингую вашу конечную точку без заголовка Auth, я получаю UnauthorizedError: No Authorization header was found. С токеном «тест» я получаю UnauthorizedError: jwt malformed. С актуальным jwt получаю UnauthorizedError: invalid signature. Можете ли вы определить, устанавливается ли вообще заголовок и какой ответ вы получаете?

Jim Perris 27.11.2018 21:45

Большое спасибо!! Работает не все. И с этим кодом все в порядке. Проблема была в id_token (он был пуст), извините, и отправка SET не как отдельный объект тоже была полезной. СПАСИБО!

Andrew Fleyer 28.11.2018 16:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
12 624
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте использовать .auth('Bearer', this.state.id_token)http://visionmedia.github.io/superagent/#authentication

нет. это не помогает. ответ та же Ошибка: "Неавторизовано"

Andrew Fleyer 27.11.2018 21:09

Можете ли вы увидеть, что какой-либо Auth добавляется в HTTP-запрос в консоли или, возможно, на любом прокси-сервере?

Rikin 27.11.2018 21:17
Ответ принят как подходящий

Заголовки устанавливаются путем указания имени и значения элемента заголовка, попробуйте:

showTransactionList = () => {
    superagent
        .post('http://193.124.114.46:3001/api/protected/transactions')
        .set('Authorization', 'Bearer ' + this.state.id_token)
        .accept('application/json')
        .then(res => {
            const posts = JSON.stringify(res.body);
            console.info(posts);
        })
        .catch((err) => {
            console.info(err);
            throw err;                    
        });
}

Поэтому вместо того, чтобы устанавливать объект в заголовке, передайте его как 2 параметра (имя, значение).

Тот же результат.

Andrew Fleyer 27.11.2018 21:18

Тогда, вероятно, вам следует использовать плагин (superagent-auth-bearer), который предоставляется для этой цели npmjs.com/package/superagent-auth-bearer

Bilal 27.11.2018 21:26

посылка SET не как отдельный объект была полезна. Спасибо

Andrew Fleyer 28.11.2018 16:40

вместо того, чтобы устанавливать полный заголовок с помощью

.set({'Authorization': 'Bearer ' + this.state.id_token})

ты можешь использовать

.auth(this.state.id_token, { type: 'bearer' })

Другие вопросы по теме