Токен JWT одинаков даже после входа в систему от имени другого пользователя - PullRequest
0 голосов
/ 02 марта 2020

Итак, я работаю над этим приложением реагировать на избыточность, где у меня есть userID и companyID в качестве претензий к моему токену JWT, которые я очищаю из локального хранилища при выходе из системы. Однако после того, как я вошел как новый пользователь из другой компании, он делает вызовы API, используя старый jwt, и я получаю совершенно другие данные. Удивительно, но из начальных вызовов API, которые я делаю на одном из них, есть правильный токен. Я могу получить правильные данные при перезагрузке, и это меня беспокоит. Я имею в виду что-то вроде экземпляра заголовка ax ios, который не был инициализирован повторно.

const instance = axios.create({
  baseURL: apiUrlBase,
  headers: {
    Authorization: "Bearer " + localStorage.getItem("jwt_access_token")
  }
});

при выходе из системы

 setSession = access_token => {
        if ( access_token )
        {
            localStorage.setItem('jwt_access_token', access_token);
            axios.defaults.headers.common['Authorization'] = 'Bearer ' + access_token;
        }
        else
        {
            localStorage.removeItem('jwt_access_token');
            delete axios.defaults.headers.common['Authorization'];
        }
    };

    logout = () => {
        this.setSession(null);
    };

компонент, где я вызываю действия

import React, {useState, useEffect} from "react";
import { connect } from "react-redux";
import withReducer from "app/store/withReducer";
import { withRouter } from "react-router-dom";
import { bindActionCreators } from "redux";
import {getAllUsers} from "../user/store/actions";  //actions from another reducer
import {getAllGroups} from "../group/store/actions";
import {getAllOpenAgendas} from "../board/store/actions";
import reducer from "./store/reducers";
import Details from "./Details";
import Group from "./Group";
import User from "./User";


function About({getAllUsers, getAllGroups,  getAllOpenAgendas}){
    const [initialized, setInitialized] = useState(false);
    useEffect(()=>{
        if(!initialized){
            getAllUsers();  //api calls that have old jwt token
            getAllGroups();
            getAllOpenAgendas();
            setInitialized(true);
        }
    })
  return (
    initialized?<div className="md:flex max-w-2xl mx-auto">
      <div className="flex flex-col flex-1 md:pr-32">
        <Details/>        
        </div>
        <div className="flex flex-col md:w-320">       
        <User/>
        <Group/>
        </div>
    </div>:null
  );
}

function mapDispatchToProps(dispatch) {
  return bindActionCreators(
    {
      getAllUsers: getAllUsers,
      getAllGroups: getAllGroups,
      getAllOpenAgendas:  getAllOpenAgendas
    },
    dispatch
  );
}

export default withReducer("companyProfileApp", reducer)(withRouter(connect(null, mapDispatchToProps)(About)));

...