如何保持用户登录?迅速 [英] How do I keep a user logged in? Swift

查看:88
本文介绍了如何保持用户登录?迅速的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Firebase进行登录,我需要知道如何保持登录状态,直到注销为止.我听说过UserDeafults,但不确定如何使用它.这是我的登录视图控制器:

I'm using firebase for login and I need to know how to stay logged in until I log out. I have heard about UserDeafults but I'm not sure on how to use it. Here is my login view controller:

import FirebaseAuth
import FirebaseFirestore
import Firebase
import FirebaseAnalytics
import UIKit


class LoginViewController: UIViewController {



    @IBOutlet weak var emailTextField: UITextField!

    @IBOutlet weak var passwordTextField: UITextField!


    @IBOutlet weak var loginButton: UIButton!


    @IBOutlet weak var errorLabel: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        setUpElements()

        if Auth.auth().currentUser != nil {
           // User is signed in.
           DispatchQueue.main.async {
              self.presentHomeViewController()
           }
        } else {
          // No user is signed in.
        }

    }



    func setUpElements() {

        // Hide the error label
        errorLabel.alpha = 0

        // Style the elements
        Utilities.styleTextField(emailTextField)
        Utilities.styleTextField(passwordTextField)
        Utilities.styleFilledButton(loginButton)

    }

    func presentHomeViewController() {
       let homeViewController = self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? ViewController
       self.view.window?.rootViewController = homeViewController
       self.view.window?.makeKeyAndVisible()
    }

    @IBAction func loginTapped(_ sender: Any) {
        // TODO: Validate Text Fields

        // Create cleaned versions of the text field
        let email = emailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
        let password = passwordTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)

        // Signing in the user
        Auth.auth().signIn(withEmail: email, password: password) { (result, error) in

            if error != nil {
                // Couldn't sign in
                self.errorLabel.text = error!.localizedDescription
                self.errorLabel.alpha = 1
            }
            else {
                self.presentHomeViewController()
            }
        }
    }

}

推荐答案

如果不注销.用户保持 login 状态.对于检查已登录的用户是否存在:

If you don't logOut. User keeps at login state. For check is logged in user exist :

Auth.auth().addStateDidChangeListener { auth, user in
            if user != nil{
                //Logged in user exist.
            }
        }

这是您的Segue ID.写任何你想要的:

This your segue id. Write whatever you want :

为您的代码进行了

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.

setUpElements()

Auth.auth().addStateDidChangeListener { auth, user in
        if user != nil{
            // User is signed in.
            print("User is not logged out.")
            self.performSegue(withIdentifier: "yourSegueId", sender: nil)
        } else {
            // No user is signed in.
            print("No user is signed in.")
        }
    }
}

希望有帮助...

这篇关于如何保持用户登录?迅速的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆