我正在使用firebase身份验证来验证我的Flutter应用中的用户,当用户输入正确的密码时,应用会正常显示主页,但是当密码错误时没有发生任何事情,我想要显示提醒每次用户输入错误的密码时,我该怎么办?
答案 0 :(得分:4)
使用currentUser()方法:
if (FirebaseAuth.instance.currentUser() != null) {
// signed in
} else {
}
答案 1 :(得分:3)
那对我不起作用,所以这就是我所做的:
filtersReducerDefaultState
答案 2 :(得分:1)
也许最短和最安全的答案是:
if(FirebaseAuth.instance.currentUser?.uid == null){
// not logged
} else {
// logged
}
它获取记录在 Firebase Authentication UID 字段中的用户 ID(如果存在),每个用户之前已经在应用上进行了身份验证,否则返回 null。currentUser?.uid
中的问号是一个空安全以避免空异常(如果为空则返回空)。
答案 3 :(得分:0)
尝试一下,它对我有用。
从用户那里获取令牌并刷新它。
Future<bool> isUserLogged() async { FirebaseUser firebaseUser = await getLoggedFirebaseUser();
if (firebaseUser != null) {
IdTokenResult tokenResult = await firebaseUser.getIdToken(refresh: true);
return tokenResult.token != null; } else {
return false; } }
Future<FirebaseUser> getLoggedFirebaseUser() { return firebaseAuthInstance().currentUser(); }
答案 4 :(得分:0)
void _emailLogin()异步{ 最终用户=等待_auth.signInWithEmailAndPassword(电子邮件:电子邮件,密码:密码);
if(user != null){
// Do something
}
} catch (e) {
String exception = Auth.getExceptionText(e);
Flushbar(
title: "Sign In Error",
message: exception,
duration: Duration(seconds: 5),
)..show(context);
}
答案 5 :(得分:0)
if (FirebaseAuth.instance.currentUser() != null) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Home(),
);
} else {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Welcome(),
);
}
答案 6 :(得分:0)
在您的 Init 方法中执行此操作..
FirebaseAuth.instance.currentUser().then((firebaseUser) {
if (firebaseUser == null) {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => LoginPage()));
} else {
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext context) => HomePage()));
}
});