Începând cu versiunea 16.3 React primește Context API ce poate înlocui Redux
Încerc să folosesc acest API pentru un sistem de login bazat pe token. Nu știu însă cum să fac tokenul să fie persistent.
În componenta App.js (root) creez contextul și state-ul aplicației:
class MpProvider extends Component {
state = {
is_authenticated: false,
mp_token: '',
user_credentials: {}
}
Acest MpProvider
conține și metoda care aduce token-ul dintr-un backend Flask folosind basic auth:
getToken: (e) => {
e.preventDefault();
fetch(`http://${API_URI}:5000/api-v1/login`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"email": this.state.user_credentials.user,
"password": this.state.user_credentials.password,
})
})
.then(response => response.json())
.then(response => {
if(response.token !== ''){
this.setState({
mp_token:response.token,
is_authenticated: true
});
}
})
},
Acum în functie de valoarea lui is_authenticated
pot proteja anumite rute din aplicatie și la nevoie fac redirect către pagina de login.
Problema mea este că după fiecare refresh acest state este resetat. Cum trebuie totuși folosit Context în acest caz? Scriu token-ul in localStorage și îl citesc de acolo?