AngularFireAuth使用电子邮件创建用户,而无需登录他。

9 浏览
0 Comments

AngularFireAuth使用电子邮件创建用户,而无需登录他。

我正在使用Angular应用程序和Firebase,我有一个功能,允许管理员用户创建更多用户。这是我在AuthService中使用的代码:

registerEmployeeByEmail(user: User, password: string): Observable {
    return from(this.afAuth.auth.createUserWithEmailAndPassword(user.email, password).then(credentials => {
      user.id = credentials.user.uid;
      this.db.doc(this.dbPath + user.id).set(user);    
    }));
  }

问题是,新用户在登录后,不希望自动登录。

0
0 Comments

AngularFireAuth在创建用户时,会自动将用户登录。但有时我们希望在创建用户时不自动登录,下面是解决这个问题的方法。

理想情况下,我们应该使用Firebase Admin SDK以管理员权限创建用户。这样做还可以避免因为同一IP地址发出太多请求而被限制,并且防止非管理员用户使用此门户创建用户。

但是,如果你确实需要这个功能(我不建议这样做),你可以通过初始化另一个FirebaseApp实例来创建用户。这样就可以保留默认的Auth实例上的当前用户:

const app2 = firebase.initializeApp(config, 'tempApp');
app2.auth().createUserWithEmailAndPassword(email, password)...

当你完成了对app2的操作后,需要登出最后一个当前用户并删除app2 FirebaseApp实例。

我还不清楚如何初始化,在启动时,我在我的app.module.ts文件中使用以下代码初始化AngularFireModule.initializeApp(environment.firebaseConfig),但在服务中,我无法使用这段代码。你的片段中firebase变量的类型是什么?

我在我的服务中实现了这个功能。在构造函数中,我实例化了一个新的firebase:this.app2 = firebase.initializeApp(environment.firebase, 'tempApp'); -- 我导入:import firebase from 'firebase'; -- 然后,你可以使用它但使用this.app2....我将代码写在下一个回答中...

0