Закрытие и открытие моего приложения происходит сразу на главной странице без проверки электронной почты пользователя
Когда я создаю нового пользователя, он делает все, что должен, сохраняет информацию о пользователях и возвращается на страницу входа, ожидая подтверждения электронной почты, прежде чем разрешить его использование. Кодирование работает, поэтому оно не позволяет вам продолжить работу до тех пор, пока электронная почта не будет проверена, но я понял, что когда я закрываю приложение, чтобы закрыть его, а затем снова открыть (до проверки электронной почты), оно сразу переходит на домашнюю страницу, минуя вход в систему. страница, даже если электронная почта не была подтверждена?
import UIKit
import Firebase
import SwiftKeychainWrapper
class ViewController: UIViewController {
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
var userUid: String!
override func viewDidLoad(){
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(_ animated: Bool) {
func Keychain() {
KeychainWrapper.standard.set(userUid, forKey: "uid")
}
if let _ = KeychainWrapper.standard.string(forKey: "uid"){
LoggedIn()
}
}
func goToCreateUserVC() {
performSegue(withIdentifier: "CreateAProfile", sender: nil)
}
func LoggedIn() {
performSegue(withIdentifier: "LoginSuccessful", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "CreateAProfile" {
if let destination = segue.destination as? CreatUsers {
if userUid != nil {
destination.userUid = userUid
}
if emailField.text != nil {
destination.emailField = emailField.text
}
if passwordField.text != nil {
destination.passwordField = passwordField.text
}
}
}
}
func DisplayAlertMessage(MessageToDisplay: String) {
let alertController = UIAlertController(title: "Alert", message: MessageToDisplay, preferredStyle: .alert)
let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in
// Code in this block will trigger when OK button tapped.
print("Ok button tapped");
}
alertController.addAction(OKAction)
self.present(alertController, animated: true, completion:nil)
}
@IBAction func signIntapped(_ sender: Any) {
if let email = emailField.text, let password = passwordField.text {
Auth.auth().signIn(withEmail: email, password: password, completion:
{(user,error) in
if let user = Auth.auth().currentUser {
if user.isEmailVerified {
self.userUid = user.uid
print("Email Verified")
self.LoggedIn()
} else {
self.DisplayAlertMessage(MessageToDisplay: "Need To Verify Email Address")
}
} else {
self.DisplayAlertMessage(MessageToDisplay: "Incorrect Username/Password")
}
});
}
}
@IBAction func NotaMemberisTapped(_ sender: Any) {
self.goToCreateUserVC()
}
}
Происходит только тогда, когда я закрываю приложение и снова открываю его, чтобы найти, что оно обманывает его - пытаясь выяснить, как предотвратить это.
1 ответ
Вы вызываете функцию LoggedIn() в зависимости от того, есть ли значение в цепочке для ключей. Я предполагаю, что вы сохраняете эту информацию в связку ключей независимо от того, была ли выполнена проверка.