Я установил проверку подлинности на основе firebase в реагирующем приложении, мой код функционален, но я думаю, что я не использовал лучший метод с точки зрения производительности и безопасности. Я иду к вам, чтобы узнать, как я могу это исправить, я слышал о редуксе и хотел бы знать, может ли это помочь мне пойти в этом направлении?
// App.js
class App extends Component {
componentDidMount() {
this.authListener();
}
authListener = () => {
firebase.auth().onAuthStateChanged((user) => {
if (user) {
sessionStorage.setItem('isAuth', true);
sessionStorage.setItem('userEmail', user.email)
} else {
sessionStorage.removeItem('isAuth');
sessionStorage.removeItem('userEmail');
}
});
};
render() {
return (
<Router>
<ScrollToTop>
<Route exact path="/" component={Accueil} />
<Route path="/inscription" component={Inscription} />
<Route path="/connexion" component={Connexion} />
<Route path="/mot-de-passe" component={Motdepasse} />
<PrivateRoute path="/abonnement" component={Subscription} />
<PrivateRoute path="/vip" component={Vip} />
</ScrollToTop>
</Router>
);
}
}
export default App;
//Connexion.js
class Connexion extends Component {
state = {
email: '',
password: '',
errorMessage: null,
redirect: false
}
handleSignIn = (e) => {
e.preventDefault();
firebase
.auth()
.signInWithEmailAndPassword(this.state.email, this.state.password)
.then(() => sessionStorage.setItem('isAuth', true))
.then(() => sessionStorage.setItem('userEmail', firebase.auth().currentUser.email))
.then(() => this.setState({ redirect: true }))
.catch(error => this.setState({
errorMessage: error.message
}));
}
render() {
if (this.state.redirect === true) {
return <Redirect to='abonnement' />
} else {
return(
// Form
);
}
}
export default Connexion;