Как улучшить сборку потока аутентификации с помощью firebase и response-router v4? - PullRequest
0 голосов
/ 17 января 2019

Я установил проверку подлинности на основе 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...