【问题标题】:React Firebase redirection反应 Firebase 重定向
【发布时间】:2018-11-16 12:24:02
【问题描述】:

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

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);
      });
  };

【问题讨论】:

    标签: javascript reactjs firebase routes firebase-authentication


    【解决方案1】:

    您使用的是什么重定向?代码目前还不清楚回答问题。

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

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

    【讨论】:

    • 我正在使用 react router redirection import { BrowserRouter as Router, Link, Redirect } from "react-router-dom";
    【解决方案2】:

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

    您的注册函数应该产生一些控制台输出。如果它真的不是,那将意味着该函数没有被(成功)调用。

    与其在登录/登录承诺中使用重定向,更好的方法是使用单个“身份验证状态观察器”,使用onAuthStateChanged,它将响应您的登录/登录/注销事件并相应地重定向。 (请参阅有关此主题的 Firebase 指南:Get Started with Firebase Authentication on Websites)有了这个观察者,您的 signInWithEmailAndPasswordcreateUserWithEmailAndPassword 调用只需要处理错误响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-27
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 2020-12-03
      • 2018-12-25
      相关资源
      最近更新 更多