Firebase邮箱密码登录异常:未注册用户可登录求助
Firebase邮箱密码登录允许未注册用户登录的问题解决
你这段代码的核心问题是没有等待异步登录操作完成:signInWithEmailAndPassword是异步方法,返回的是Future对象,你直接把它赋值给checkuser,不管登录是否成功,这个checkuser永远都不是null,所以会直接执行页面跳转,错误捕获的catch块根本没机会触发。
修正后的代码如下:
onPressed: () async { try { // 加上await等待登录请求完成 final userCredential = await auth.signInWithEmailAndPassword( email: Email!, password: Password!); // 走到这里说明登录成功,直接跳转 Navigator.pushNamed(context, MainScreen.id); } catch (e) { showDialog<String>( context: context, builder: (BuildContext context) => AlertDialog( title: const Text('登录提醒'), content: Text(e.toString()), actions: <Widget>[ TextButton( onPressed: () => Navigator.pop(context, '确定'), child: const Text('确定'), ), ], ), ); } },
补充说明:
- 加上
await后,代码会等待Firebase的登录请求返回结果,成功则执行页面跳转,失败则抛出对应异常(比如用户不存在、密码错误等)并进入catch块弹出提示。 - 无需再判断
userCredential != null,因为登录失败时Firebase不会返回有效的UserCredential,直接触发异常捕获逻辑。
内容的提问来源于stack exchange,提问作者Pokemon Hacker
相关产品推荐
相关产品推荐

