После того, как вы получите ответ от своего API, вы должны затем хранить любую не конфиденциальную информацию, которая может вам понадобиться, в вашем интерфейсе. Если вы используете что-то вроде JWT, вы можете сохранить токен в локальном хранилище и использовать библиотеку jwt-decode
для его чтения.
fetch(this.email.value, this.password.value)
.then(res => {
localStorage.setItem('id_token', res.token) // Store token
})
.catch(err => {
console.log(err);
});
В реакции также довольно часто встречается служебный или вспомогательный файл, который обрабатывает вашу авторизацию
/ Utils / AuthUtility
class AuthService{
login(email, password) {
return this.fetch('/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email,
password
})
})
.then(res => {
if(res.type == 'success'){
this.setToken(res.token) // Setting the token in localStorage
return Promise.resolve(res);
} else {
return Promise.reject(res)
}
})
}
// Other available methods
setToken(idToken) {
// Saves user token to localStorage
localStorage.setItem('id_token', idToken)
}
getProfile() {
// Using jwt-decode npm package to decode the token
return decode(localStorage.getItem('id_token'); // assuming you have jwt token then use jwt-decode library
}
}
тогда в вашем логине
//components/login.js
import AuthUtility from './utils/AuthUtility';
login = (e) => {
this.Auth.login(this.email.value, this.password.value)
.then(res => {
this.props.history.push('/protectedRoute');
})
.catch(err => {
console.log(error);
});
}