尽管用户凭据错误,登录仍然有效

Chr*_*ian 0 dart firebase firebase-authentication flutter

我在Flutter应用程序中使用Firebase和FirebaseAuth来管理用户和数据。

问题是,即使用户输入了错误的凭据,也总是将他们带到下一个屏幕。他们可以将数据输入到不存在的用户帐户,或者输入错误的密码,并且它们仍被带到文本屏幕,只有在成功通过身份验证之后,它们才会发生。

据我了解,如果内部代码(如果user!= null)仅应在身份验证成功的情况下执行,但它始终会一直发生。

控制台确实记录了Firebase的响应,指出用户不存在或密码错误,但是代码仍然继续执行。

有人看到我做错了吗?我仍然是一个学习者,所以这可能是一个基本的错误:(

谢谢!!

final _auth = FirebaseAuth.instance;
...
onPressed: () async {
              try {
                final user = _auth.signInWithEmailAndPassword(
                    email: email, password: password);
                if (user != null) {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => CoursesListScreen(),
                    ),
                  );
                }
              } catch (e) {
                print(e.message);
              }
            },
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 5

当您致电时,_auth.signInWithEmailAndPassword您会得到a Future,它将永远不会nil。因此,实际上导航器将始终转到下一个屏幕。请注意,此阶段用户尚未登录,您的代码仅检测到错误情况。

您更有可能要等到Future解决为止,您可以这样做await

final user = await _auth.signInWithEmailAndPassword(...)
Run Code Online (Sandbox Code Playgroud)