didReceiveAuthenticationChallenge вызывается только один раз iPhone - PullRequest
3 голосов
/ 16 июня 2011

Я подключаюсь к серверу, используя NSURLConnection.Сервер запрашивает базовую аутентификацию, для которой я использую методы делегата: - didReceiveAuthenticationChallenge.Но это называется только один раз.Если я изменю пароль на другое значение, то эти delegate методы не будут вызваны, и мой вход будет успешным?

Буду признателен за любую помощь.

Спасибо.

Ответы [ 4 ]

6 голосов
/ 12 июля 2011

Решено!

Оказывается, что NSURLConnection на самом деле вел себя правильно, то есть didReceiveAuthenticationChallenge: вызывалось для каждой проверки подлинности.

Проблема заключалась в том, что сервер былне отправлять вызовы после первого.Это произошло потому, что сервер устанавливал cookie.

Вы можете вызвать новый вызов, просто удалив cookie.Поскольку для этого сервера нет других полезных файлов cookie, я просто удаляю их все:

- (void)clearCookiesForURL {
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray *cookies = [cookieStorage cookiesForURL:_URL];
    for (NSHTTPCookie *cookie in cookies) {
        NSLog(@"Deleting cookie for domain: %@", [cookie domain]);
        [cookieStorage deleteCookie:cookie];
    }
}
1 голос
/ 11 августа 2013

К сожалению, в настоящее время нет простого способа сделать то, что вы просили:

Информативное объяснение Apple: Кэш сеанса TLS

Запрос об ошибке Open Radar: Нет способа очистить кэш TLS с NSURLConnection

1 голос
/ 09 октября 2012

Чтобы полностью закрыть сеанс, необходимо выполнить следующие действия.

  1. Удалить все файлы cookie
  2. Удалить все учетные данные
  3. NSURLCredentialPersistence должно быть NSURLCredentialPersistenceNone
0 голосов
/ 16 июня 2011

NSURLConnection будет кэшировать учетные данные.Вот подход, чтобы найти и стереть определенные учетные данные (таким образом, вы получаете вызов снова):

Можно ли предотвратить NSURLRequest от кэширования данных или удалить кэшированные данные после запроса?

Надеюсь, что это работает для вас, Стив

...