Я использую Alamofire для входа в свое приложение. Имя пользователя и пароль приходят из текстовых полей. Я могу войти в систему нормально, но если я выйду из системы и вернусь к экрану входа в систему, каждая последующая попытка входа в систему использует исходные учетные данные. Например, если я введу 'test@test.com' и 'пароль', я смогу войти, но затем, если я выйду из системы и введу 'test2@test.com' и 'test2password', он использует первые учетные данные для 'test@test.com'. Кроме того, если я введу неверные учетные данные, они всегда сообщат, что они неверны, даже после того, как я введу правильные учетные данные. Единственный способ заставить его принять другой набор учетных данных - принудительно закрыть приложение и снова открыть его. Другая часть этого заключается в том, что каждый последующий вызов других конечных точек после входа требует учетных данных пользователя. Это все работает нормально, когда я вхожу в систему, но когда я исправляю проблему с входом в систему, используя заголовок авторизации, а не метод аутентификации Alamofire, мои последующие вызовы не работают.
Вот как я пытаюсь чтобы все мои последующие вызовы работали, но это приводит к тому, что первый набор учетных данных будет использоваться каждый раз, пока я не принудительно закрою приложение.
Alamofire.request("https://example.com/signin/", method: .get).authenticate(user: userName, password: password).responseJSON { response in
if response.result.value != nil {
let results = response.result.value as? [[String: AnyObject]]
if results!.count > 0 {
if let dictionary = results?[0] {
if let userEmail = dictionary["email"] {
print("Signed in with: \(userEmail)")
sharedUser.userJSON = JSON(response.result.value!)
sharedUser.userEmail = self.usernameField.text!
sharedUser.userPassword = self.passwordField.text!
DispatchQueue.main.async {
self.performSegue(withIdentifier: "signInSegue", sender: nil)
}
}
}
} else {
DispatchQueue.main.async {
let failedSignInAlert = UIAlertController(title: "Invalid Email or Password", message: "The information you entered is incorrect. Please verify you have the correct information and try again.", preferredStyle: .alert)
let failedAction = UIAlertAction(title: "OK", style: .default, handler: { (action) in
let cookieStorage = HTTPCookieStorage.shared
for cookie in cookieStorage.cookies! {
cookieStorage.deleteCookie(cookie)
}
let urlCache = URLCache.shared
urlCache.removeAllCachedResponses()
self.dismiss(animated: true, completion: nil)
})
failedSignInAlert.addAction(failedAction)
self.present(failedSignInAlert, animated: true, completion: nil)
}
}
} else {
print("SIGN IN FAILED!")
}
DispatchQueue.main.async {
self.loadingIndicator.stopAnimating()
self.signInButton.isEnabled = true
}
}