#firebase #flutter #authentication #firebase-authentication
# #firebase #flutter #аутентификация #firebase-аутентификация
Вопрос:
Если я попытаюсь заполнить поля текстовой формы, отвечающие за адрес электронной почты и пароль, и отправить, процедура входа в систему всегда будет успешной.. не имеет значения, находится ли пользователь в поле аутентификации firebase. Я уже делал страницы входа и регистрации раньше, и firebase работала отлично. Только разница заключалась в использовании pushNamed вместо pushReplace. Должно ли это иметь значение?
Это форма inkwell onTap :
onTap: () {
final formState = _formkey.currentState;
if (formState.validate()) {
formState.save();
signIn(_email, _password).whenComplete(
() => Navigator.of(context)
.pushReplacement(
MaterialPageRoute(
builder: (context) =>
HomePage(),
)));
}
}
и аутентификация:
FirebaseAuth _auth = FirebaseAuth.instance;
Future<void> signIn(String _email, String _password) async {
try {
UserCredential user = await _auth.signInWithEmailAndPassword(
email: _email, password: _password);
} on FirebaseAuthException catch (e) {
print('error');
}
}
Включен метод входа по электронной почте / паролю.
Как исправить эту проблему и разрешить входить в систему только пользователям, которые существуют в firebase?
Комментарии:
1.
whenComplete()
метод определяетThe [action] function is called when this future completes, whether it does so with a value or with an error.
, поэтому даже его успешный или ошибочный вход в систему всегда будет вызываться2. Есть много примеров проверки пользователя FirebaseAuth. Например, проверьте, существует ли пользователь или null после этого, затем перейдите () куда-нибудь