检查用户是否已登录Flutter和Firebase身份验证|

STE*_*LUS 6 dart firebase flutter

我正在使用Firebase身份验证在我的Flutter应用程序中对用户进行身份验证,当用户输入正确的密码时,该应用程序会正常向他显示主页,但是当密码输入错误时没有任何反应,我想在每次用户输入了错误的密码,该怎么办?

niv*_*360 13

这对我不起作用,所以这就是我所做的:

FirebaseAuth.instance.currentUser().then((firebaseUser){
  if(firebaseUser == null)
   {
     //signed out
   }
   else{
    //signed in
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 没有为我工作。Firebase 用户即使被删除也始终有效。 (7认同)
  • @OliverDixon 我遇到了完全相同的问题。你找到解决办法了吗? (3认同)

Rao*_*che 7

使用currentUser()方法:

if (FirebaseAuth.instance.currentUser() != null) {
    // signed in
} else {

}
Run Code Online (Sandbox Code Playgroud)

  • 您始终可以使用 ```if (await FirebaseAuth.instance.currentUser() == null)``` (4认同)
  • 这对我不起作用,可能是因为currentUser返回一个future,它不是null,并且总是使应用程序认为用户已登录。使用await或.then实际上可以获取用户对象,而不是将来。 (3认同)
  • 这个答案不正确 FirebaseAuth.instance.currentUser() 在 firebase_auth 插件 0.11.0 中是异步的,也许在过去它是同步的 (2认同)
  • nullsafety 问题...`错误:无法无条件调用该函数,因为它可以为“null”` (2认同)

Azi*_*ziz 5

也许最短、最安全的答案是:

if(FirebaseAuth.instance.currentUser?.uid == null){
// not logged
} else {
// logged
}
Run Code Online (Sandbox Code Playgroud)

它获取记录在 Firebase 身份验证 UID 字段中的用户 ID(如果存在),因为之前已在应用程序上对每个用户进行了身份验证,否则返回 null。
中的问号currentUser?.uid是Null安全性,以避免null异常(如果为null则返回null)。