当我刚刚退出应用而未退出时,经过身份验证的用户是否仍然登录?

时间:2018-05-23 16:56:51

标签: ios swift firebase firebase-authentication

我是Firebase的新手,如果用户已登录,我目前正在尝试处理(加载应用时)。 因此,根据一本书,我必须检查它:

if Auth.auth().currentUser?.uid == nil {
      //do smth  
}

事实证明(如果我没有错过任何东西而没有错)它只会检查控制台的“身份验证”部分中的最后一个用户。我的意思是如果我注册用户:

 Auth.auth().createUser(withEmail: email, password: password) { (User, Error) in
        if Error != nil {
            print(Error)
            return
        }

然后终止我的应用程序,然后在我检查期间它将只看到最后一个注册用户。在检测到这个已登录的用户后,如果我退出,则应用程序在下一个检查过程中看不到用户签名的其余内容。 enter image description here

所以看起来像是:

  1. 我运行app然后多次创建用户(创建然后终止应用并再次创建然后终止应用并再次返回)
  2. 然后在第1步之后检查用户是否已登录。这是最后一位用户还是第一位用户,我不知道,因为我没有找到并详细说明该信息。

    if Auth.auth().currentUser?.uid == nil {
      //do sign out
      do {
        try Auth.auth().signOut()
      } catch let logoutError {
        print(logoutError)
      }
    

    }

  3. 它找到了登录用户,然后我唱出了这个用户。

  4. 我终止app。
  5. 我再次运行此应用程序,在初次检查登录用户时,它找不到任何一个。

    override func viewDidLoad() {
    super.viewDidLoad()
      navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(handleLogout))
    
    //user is not logged in
    if Auth.auth().currentUser?.uid == nil {
        signOut()
    }
    

    }

  6. 为什么呢?我的意思是我没有自己注销其他注册用户,而且我知道在调用createUser func时,这个createUser func也会签署用户。

    如果我创建新的,也许app会注销用户?那么为什么我没有找到任何关于这种行为的信息(如果有人有任何线索我会很感激。

1 个答案:

答案 0 :(得分:1)

Firebase身份验证用户保持登录状态,直到:

  • 您的代码要么明确签署
  • 或者您在同一设备上的同一个应用中创建另一个用户
  • 或直到发生需要他们再次登录的事件(例如密码更改)

单个设备上的单个应用只能拥有一个已登录的用户。如果您在同一设备上登录(或创建)其他用户,则会退出以前的用户。