当前位置: 首页 > 知识库问答 >
问题:

Firebase Auth-用户在Firebase注册并重定向后未登录

益何平
2023-03-14
createAccount() {
  firebaseAuth().createUserWithEmailAndPassword(this.state.email, this.state.password).then((user) => {
    // write some data to database
    firebase.database().ref().child('users').child(user.uid).child('someKey').set(this.state.email).then(function() {
      // send email verification
      user.sendEmailVerification().then(function() {
        console.log("sent email verification");
        // Go to home page
        this.props.history.push('/home');
      }.bind(this)).catch(function(error) {
        console.log("Error: account created but no verification email sent.");
      }.bind(this));
    }.bind(this)).catch((error) => {
      console.log('Error: while writing to database');
    });
  // catch any error while creating user
  }).catch((error) => {
    console.log('Error: while creating account');
  });
}
componentDidMount() {
  firebase.auth().onAuthStateChanged(function (user) {
    if (!user) {
      console.log("no user logged in");  
      this.props.history.replace('/login'); // ISSUE: Always redirected to login, even after signup and login
      return
    } else {
      console.log("Woo! User is logged in!");
    }
  }.bind(this))
}
    null

下面是我如何初始化我的应用程序

<!-- Firebase -->
<script src="https://www.gstatic.com/firebasejs/4.0.0/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: "XXXXXXXXX",
    authDomain: "myproject.firebaseapp.com",
    databaseURL: "https://myproject.firebaseio.com",
    projectId: "XXXXXXXXX",
    storageBucket: "XXXXXXXXX.appspot.com",
    messagingSenderId: "XXXXXXXXX"
  };
  firebase.initializeApp(config);
</script>

值得注意的是:如果我用一个不是刚刚创建的帐户登录(或者如果我等待一段时间然后登录到我创建的帐户),在重定向时保留授权似乎没有问题。似乎只有当我创建一个新用户然后重定向时,它才会丢失登录的用户。

共有1个答案

狄宗清
2023-03-14
state = { user: null };

componentDidMount() {
   firebase.auth().onAuthStateChanged(user => {
      if (user) {
        this.setState({ user });
      } else {
        this.props.history.push('/login');
      }
   });
 }
login() {
    firebase
      .auth()
      .signInWithEmailAndPassword(this.state.email, this.state.password)
      .then(res => {
        this.props.history.push('/');
      })
      .catch(err => console.error(error));
  }
 类似资料:
  • 我正在开发一个梦幻运动应用程序。用户可以创建一个联盟,如果成功,将获得一个邀请链接与其他人共享。如果用户未登录,则除登录和注册页面外的所有路由都无法访问,因此当有人使用邀请链接时,它会将其发送到登录页面。 如何保存邀请链接,以便在他们登录/注册时可以返回邀请链接? 我尝试过使用,但它给了我“localhost:3000”而不是“localhost:3000/invite/:leagueid”。我正

  • 我正在尝试实现一个功能,在登录后,用户会根据其角色重定向到URL。我已经设置了角色部分,但是在登录后立即测试用户的属性时遇到了问题。 我按照这里的说明创建了一个用户登录页面。我有一个看起来像这样的: 我的函数验证用户,但我不知道如何在登录后立即访问用户对象。这就是我目前拥有的: 当我第一次尝试使用管理员帐户登录时,我会进入路径,因为此时没有任何经过身份验证的用户对象。 在尝试登录后,但是得到了一个

  • 安全性:编码器:AppBundle\Entity\Usuario:算法:bcrypt#https://symfony.com/doc/current/security.html#b-配置如何加载用户提供程序:db\U提供程序:实体:类:AppBundle:Usuario

  • 问题内容: 我有一个网站,有一个用户系统。我想将wordpress的用户系统集成到该网站的系统中,但是我仍然想使用该网站的注册/登录页面。我不希望任何人都能使用Wordpress的登录或注册表格进行登录或注册。相反,当他们尝试访问Wordpress中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面。 有什么办法吗?我已经尝试过Google,但是我所能找到的只是在用户登录或注册

  • 问题内容: 我的应用看起来像: 如果用户访问/ game下的页面并没有登录,我想将他们重定向到登录页面。 如何在所有路由器中做到优雅? 问题答案: 基本思想是使用自定义组件(在下面的示例中为PrivateRoute)包装需要身份验证的路由。PrivateRoute将使用某种逻辑来确定用户是否已通过身份验证,然后确定是否通过身份验证。允许请求的路由呈现或重定向到登录页面。 在react-router

  • Firebase存储电子邮件和密码。 我需要在注册中添加用户名。 我还需要使用用户名/密码而不是电子邮件/密码对(登录)用户进行身份验证。 注册应包含用户名、电子邮件和密码。。。 而登录时应使用用户名和密码。 注册Activity.java } 后勤活动。Java语言