我有一个Flutter应用程序,管理员可以在其中为其他用户创建帐户(使用Firebase Authentication)。
我的逻辑与以下几点相似:
UserCredential userCredential =
await authService.instance.createUserWithEmailAndPassword(
email: emailController.text,
password: passwordController.text,
);
main.dart
:
MaterialApp(
home: StreamBuilder<User>(
stream: authentcationService.authStateChanges,
builder: (context, snapshot) {
// Build the app
// ...
},
)
)
但是,我注意到这会触发上面stream
中的身份验证状态更改:调用createUserWithEmailAndPassword
是注销当前用户并登录新创建的用户,而不是简单地在Firebase Authentication中创建一个新用户。
2条答案
按热度按时间erhoui1w1#
当你创建一个用户,它会自动登录他们在同一时间在我的经验,无论注册方法。即使你注销后,登录的用户仍然会改变。
也许你可以实现一个云功能来创建一个用户?(如果这是可能的?)或者你可以保存正确的/admin用户名密码,并自动注销新创建的帐户,并在创建后重新登录到管理员帐户?
示例:(以创建帐户的管理员身份登录)(伪代码)
不过,您可能需要更改流/授权应用 Package 器来处理此活动。
编辑:这个答案有更深入的解决方案:https://stackoverflow.com/a/38013551/13714686
我个人会考虑通过Firebase的云功能来创建新用户,这似乎是最简单的设置。Firebase也有从文件创建用户的选项,如果你想让你的管理员批量添加用户,你可以查看更多(尽管,我认为这个功能是命令行工具)
mccptt672#
我看过很多关于这个问题的讨论,我找到了很多复杂而艰难的解释和答案。
但是,老实说,这是从经过身份验证的帐户执行帐户创建的最小和最好的方法,保持新用户注销,而不替换当前用户。