AngularFireAuth使用电子邮件创建用户,而无需登录他。
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); })); }
问题是,新用户在登录后,不希望自动登录。
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....我将代码写在下一个回答中...