Логин работает, несмотря на неверные учетные данные пользователя - PullRequest
0 голосов
/ 29 сентября 2019

Я использую Firebase и FirebaseAuth в своем приложении Flutter для управления пользователями и данными.

Проблема в том, что пользователи всегда переходят на следующий экран, даже если они вводят неправильные учетные данные. Они могут вводить данные в несуществующие учетные записи пользователей или неверные пароли, и они по-прежнему переносятся на текстовый экран, что должно происходить только после успешной аутентификации.

Насколько я понял, если код внутри (если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);
              }
            },

1 Ответ

5 голосов
/ 29 сентября 2019

Когда вы звоните _auth.signInWithEmailAndPassword, вы получаете Future, который никогда не будет nil. Так что действительно, навигатор всегда будет переходить к следующему экрану. Обратите внимание, что пользователь не вошел в систему на этом этапе, ваш код просто обнаруживает неправильное условие.

Скорее всего, вы захотите дождаться разрешения Future, что вы делаете с await:

final user = await _auth.signInWithEmailAndPassword(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...