检查用户是否已登录Flutter& firebase auth |

时间:2018-06-06 06:32:13

标签: firebase dart flutter

我正在使用firebase身份验证来验证我的Flutter应用中的用户,当用户输入正确的密码时,应用会正常显示主页,但是当密码错误时没有发生任何事情,我想要显示提醒每次用户输入错误的密码时,我该怎么办?

7 个答案:

答案 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()));
    }
  });