Сброс учетных данных URLSession.shared - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь выполнить некоторые запросы API (с учетными данными), используя URLSession.shared, однако он не работает должным образом.

Когда пользователь впервые вводит свои учетные данные, я устанавливаю их по умолчанию для сеанса, используяследующее.

let credential = URLCredential(user: username, password: password, persistence: .forSession)
URLCredentialStorage.shared.setDefaultCredential(credential, for: myProtectionSpace)

Затем я бы запустил первый URL-запрос, используя это.В этом примере предположим, что запрос пытается получить доступ к https://myapi.com/go.

URLSession.shared.dataTask(with: request) { (data, response, error) in
    // do stuff
}.resume()

Это прекрасно работает, учетные данные передаются и все, пока мне не понадобится пользователь для выхода.Когда я сохраняю разные учетные данные, даже с неверным паролем, запрос на https://myapi.com/go все равно будет возвращаться, и вызов 401, похоже, не будет выдан.

Я перепробовал всеследующие вещи, и ничто, похоже, не удаляет учетные данные сеанса для этого конкретного URL.

// Attempt #1: doesn't work
URLSession.shared.reset {
     // I confirmed this eliminates all credentials in the URLCredentialStorage.shared
     // store updated credentials and fire off new request here
}

// Attempt #2: doesn't work
URLCredentialStorage.shared.remove(credential, for: myProtectionSpace)
URLSession.shared.invalidateAndCancel()
// store updated credentials and fire off new request here 

// Attempt #3: doesn't work
URLCredentialStorage.shared.remove(credential, for: myProtectionSpace)
URLSession.shared.finishTasksAndInvalidate()
// store updated credentials and fire off new request here

Похоже, что сервер не выдает вызов 401 после первого успешного запроса к https://myapi.com/go, поэтому пересмотренныйучетные данные не привыкают.Я вынужден использовать пользовательский URLSession только из-за этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...