URLCredentialStorage.shared.defaultCredential не имеет пароля после получения ответа 401

В своем приложении я использую:

URLCredentialStorage.shared.setDefaultCredential(......)

и он отлично работает. Но если на один из моих запросов будет получен ответ 401, все последующие запросы получат ответ 401. После изучения проблемы в течение нескольких дней я проверил учетные данные по умолчанию внутри метода делегата следующим образом:

func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    ...........

    let credentials =  URLCredentialStorage.shared.defaultCredential(for: ..... )
    debugPrint("username: \(credentials.user) and pass: \(credentials.password)")

    ...........
}

Приведенный выше код печатает:

"username: Необязательно ("myusername") и pass: nil"

Это происходит только после получения ответа 401 от сервера. В противном случае он печатает правильный пароль.

Это ожидаемое поведение? Есть ли способ избежать обнуления пароля после получения ответа 401?

0 ответов

Другие вопросы по тегам