Ich habe eine Reaktion/Redux-Anwendung, die ein Token von einem API-Server holt. Nachdem der Benutzer sich authentifiziert hat, möchte ich veranlassen, dass alle Axios-Anfragen dieses Token als Autorisierungsheader haben, ohne es manuell an jede Anfrage in der Aktion anhängen zu müssen. Ich bin ziemlich neu zu reagieren/redux und bin mir nicht sicher über den besten Ansatz und finde keine Qualitätstreffer auf Google.Anfügen Authorization Header für alle Axios Anfragen
Hier ist meine redux Setup:
// actions.js
import axios from 'axios';
export function loginUser(props) {
const url = `https://api.mydomain.com/login/`;
const { email, password } = props;
const request = axios.post(url, { email, password });
return {
type: LOGIN_USER,
payload: request
};
}
export function fetchPages() {
/* here is where I'd like the header to be attached automatically if the user
has logged in */
const request = axios.get(PAGES_URL);
return {
type: FETCH_PAGES,
payload: request
};
}
// reducers.js
const initialState = {
isAuthenticated: false,
token: null
};
export default (state = initialState, action) => {
switch(action.type) {
case LOGIN_USER:
// here is where I believe I should be attaching the header to all axios requests.
return {
token: action.payload.data.key,
isAuthenticated: true
};
case LOGOUT_USER:
// i would remove the header from all axios requests here.
return initialState;
default:
return state;
}
}
Meine Token in redux Speichern unter state.session.token
gespeichert werden.
Ich bin ein bisschen verloren, wie es weiter geht. Ich habe versucht, eine axios instance in einer Datei in meinem Stammverzeichnis und aktualisieren/importieren, dass anstelle von node_modules, aber es fügt nicht die Kopfzeile, wenn der Zustand ändert. Irgendwelche Rückmeldungen/Ideen werden sehr geschätzt, danke.
Wo speichern Sie das Autorisierungstoken, nachdem das Token vom Server empfangen wurde? lokaler Speicher? –
in redux store session.token – awwester