You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:37:39