如果帐户被停用,Firebase会检查

时间:2016-10-25 11:01:58

标签: swift swift3 firebase-authentication

我目前正在尝试创建一个自动检测帐户是否已被停用的功能。

据此,我的意思是我希望用户自动注销,而无权执行任何操作。

我知道有关权限的内容是在firebase security& amp;规则。但是,我不知道如何禁止禁用帐户的活动。我只熟悉auth.uid和变量。

如果我想这样做,我该怎么办?

我已经尝试了为每个表单重新验证用户的想法,但我很快发现这将是不必要的数据使用。

或者这是要走的路?

3 个答案:

答案 0 :(得分:1)

其中一种方法是使用身份验证。您需要重新验证firebase用户:

user?.reauthenticateWithCredential(credential) { error in
  if let error = error {
    // An error happened.
  } else {
    // User re-authenticated.
  }
}

如果帐户被禁用,则会收到FIRAuthErrorCodeUserDisabled错误。 以某个时间间隔循环运行它。

答案 1 :(得分:0)

我重新加载了当前用户,如果它被禁用,您将收到错误:

devDependencies

答案 2 :(得分:0)

您刚才问过,希望答案仍然有帮助:

您可以为authStateDidChange添加一个观察者,因此如果用户注销,它会被触发

NotificationCenter.default.addObserver(forName: NSNotification.Name.AuthStateDidChange, object: Auth.auth(), queue: nil) { _ in

            if ((Auth.auth().currentUser) == nil) {
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let mvc = storyboard.instantiateViewController(withIdentifier: "MainViewController")
                self.window!.rootViewController = mvc
                let options: UIView.AnimationOptions = .transitionCrossDissolve
                let duration: TimeInterval = 0.1
                UIView.transition(with: self.window!, duration: duration, options: options, animations: {}, completion:
                { completed in
                    self.window?.rootViewController?.performSegue(withIdentifier: "showWelcomeView", sender: nil)
                })
            }
        }

现在很酷的事情是,如果您像前面提到的MegaChan那样调用reload命令,并且用户被禁用或删除,firebase控制器会将用户注销,观察者将authstate更改并且您的登录屏幕,在我的情况下welcomeviewcontroller出现;)