Токен JWT [Объект Объект] - PullRequest
0 голосов
/ 21 октября 2019

У меня есть система авторизации JWT. При входе в систему я помещаю токен JWT с сервера в локальное хранилище.

Также у меня есть TariffsApiComponent, который вызывает getTariffs thunk в TariffsReducer.

Этот блок делает запрос http для тарифов, используя этот токен JWT в заголовках, но затем, когда я проверяю ответ от сервера, я не получаю resultCode = 0 (успешный запрос).

Iпытался проверить, что не так с моим токеном на сервере, но там я вижу это.

Также должен сказать, что если я перезагружаю страницу, не удаляя токен из локального хранилища, это работает!

Компонент

TariffsContainer.jsx
import React, { Component } from "react";
import { connect } from "react-redux";
import Tariffs from "./Tariffs";
import { changeTariffStatus, getTariffs } from "../../../redux/tariffsReducer";
import withAuthRedirect from "../../../hoc/withAuthRedirect";
import { compose } from "redux";

class TariffsApiComponent extends Component {
  componentDidMount() {
    this.props.getTariffs();
  }

  render() {
    return (
      <Tariffs
        tariffId={this.props.tariffId}
        tariffs={this.props.tariffs}
        changeTariffStatus={this.props.changeTariffStatus}
      />
    );
  }
}
...

tariffsReducer.js
...
export const setTariffs = (tariffs, tariffId) => ({
  type: SET_TARIFFS,
  tariffs,
  tariffId
});

export const getTariffs = () => dispatch => {
  getTariffsAPI().then(response => {
    if (response.resultCode === 0) {
      let { tariffs, tariffId } = response;
      dispatch(setTariffs(tariffs, tariffId));
    }
  });
};
...

запросы

...
const instance = axios.create({
  headers: {
    "x-access-token": localStorage.getItem("token")
  }
});

export const getTariffsAPI = () => {
  return instance
    .get(`http://localhost:1337/tariffs`)
    .then(response => {
      return response.data.data});
};
...

промежуточное ПО

let checkToken = (req, res, next) => {
    let token = req.headers["x-access-token"] || req.headers["authorization"];
    if (token.startsWith("Bearer ")) {
        token = token.slice(7, token.length);
    }

    console.log(req.headers["x-access-token"]);

    if (token) {

        jwt.verify(token, config.secret, (err, decoded) => {
            if (err) {
                return res.json({
                    success: false,
                    message: "Token is not valid"
                });
            } else {
                req.decoded = decoded;
                next();
            }
        });
    } else {
        return res.json({
            success: false,
            message: "Auth token is not supplied"
        });
    }
};

Ошибка

enter image description here

что я вижу на сервере после входа в систему

enter image description here

1 Ответ

0 голосов
/ 21 октября 2019

Я нашел, где возникает проблема, но не может t get why axios create isn t работать. Прокомментировал один - не работает. Без комментариев - работает.

Axios create

С комментариями и без комментариев

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...