Используйте токен на предъявителя от localalstorage - PullRequest
0 голосов
/ 03 июня 2019

Итак, я создаю простое приложение React Redux, используя суперагент, чтобы получить некоторые элементы из базы данных и выполнить с ними некоторые операции. Я использовал платформу Symfony Api в качестве бэкэнда и создал несколько API. Все мои API защищены и для доступа к ним нужен токен на предъявителя. Я создал API аутентификации, используя JWT.

Теперь я пытаюсь отобразить данные в моем приложении React. Я уже создал действующую форму входа в систему. Я могу использовать свое имя пользователя и пароль и получить токен взамен.

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

("{code: 401, message: "JWT Token not found"}
code: 401
message: "JWT Token not found")

, что означает, что я не использую токен на предъявителя в своем запросе.

Итак, как мне использовать токен в моих запросах POST, GET и PUT, чтобы я мог их использовать.

PS: Мой токен хранится в моем локальном хранилище под именем jwtToken вот мой файл agent.js:

import superagentPromise from 'superagent-promise';
import _superagent from 'superagent';

const superagent = superagentPromise(_superagent,global.Promise);
const API_ROOT='http://localhost:8000/api';
const responseBody = response => response.body;

let token =window.localStorage.getItem('jwtToken');;



const tokenPlugin = secured => {
    return (request) => {
        if (token && secured){
            request.set('Authorization',`Bearer ${token}`);
        }
};
};
export const requests={
    get: (url, secured = false)=>{
        return superagent.get(`${API_ROOT}${url}`).use(tokenPlugin(secured)).then(responseBody);
    },
    post: (url, body = null, secured = true) => {
        return superagent.post(`${API_ROOT}${url}`, body).use(tokenPlugin(secured)).then(responseBody);
    },
    setToken: (newJwtToken) => token = newJwtToken
    };

1 Ответ

2 голосов
/ 03 июня 2019

Ваш метод принимает параметры url и secured, и, возможно, вы не отправляете второй параметр, и по умолчанию он имеет значение false, а tokenPlugin проверяет token && secured

попробуйте get(url, true) там, где вы используете get.

...