Итак, я работаю над этим приложением реагировать на избыточность, где у меня есть 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)));