反应Firebase重定向

时间:2018-11-16 12:24:03

标签: javascript reactjs firebase routes firebase-authentication

用户登录或注册后,我想重定向到仪表板页面 在这种情况下,我将获得用户已登录或已注册但页面不会进入仪表板的控制台

import { BrowserRouter as Router, Link, Redirect } from "react-router-dom";

//in signin.js
 login = e => {
    const { email, password } = this.state;
    const { router } = this.props;
    e.preventDefault();

    auth()
      .signInWithEmailAndPassword(email, password)
      .then(user => {
        if (user) {
          console.log('user has signed in or up', user);
          return <Redirect to='/profile' />;
        } else {
          console.log('user signed out or still need to sign in', user);
          return <Redirect to='/signIn' />;
        }
      })
      .catch(error => {
        console.log(e);
      });
  };

//in App.js

render() {
    return (
      <Router>
          <Route exact path="/" component={SignIn} />
          <Route exact path="/signIn" component={SignIn} />
          <Route exact path="/signUp" component={SignUp} />
          <AuthorizedRoute exact path="/dashboard" component={Profile} />
      </Router>
    );
  }

在注册时,我什至没有收到控制台消息,我认为没有必要签入注册(如果用户存在),那么我该如何进行注册

 //in sign up.js
 signUp = e => {
    const { email, password } = this.state;
    e.preventDefault();

    auth()
      .createUserWithEmailAndPassword(email, password)
      .then(user => {
        if (user) {
          console.log('user has signed in or up', user);
          return <Redirect to='/dashboard' />;
        } else {
          console.log('user signed out or still need to sign in', user);
          return <Redirect to='/signIn' />;
        }
      })
      .catch(error => {
        console.log(error);
      });
  };

2 个答案:

答案 0 :(得分:0)

您正在使用什么重定向?目前尚不清楚该代码是否可以回答问题。

res.redirect("/user/add");

您也可以根据响应使用此方法。

答案 1 :(得分:0)

根据提供的代码,成功登录后,您的重定向URL应该是“ /仪表板”,而不是“ / profile”。

您的signUp函数应该会产生一些控制台输出。如果确实不是,那意味着该函数没有被(成功)调用。

与其在登录In / Up Promise中使用重定向,不如使用一种使用onAuthStateChanged的单个“身份验证状态观察器”来响应您的登录/ Up / Out事件并进行相应重定向的更好方法。 (有关此主题,请参见Firebase指南:Get Started with Firebase Authentication on Websites)有了该观察器之后,您的signInWithEmailAndPasswordcreateUserWithEmailAndPassword调用仅需要处理错误响应。