2015-10-31 3 views
1

The (скоро устареет) NSURLConnectionDelegate позволяет обрабатывать TLS доверия вызов следующим образом:NSURLConnection willSendRequestForAuthenticationChallenge настойчивость

-(void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge(NSURLAuthenticationChallenge *)challenge 
{ 
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) 
     [challenge.sender performDefaultHandlingForAuthenticationChallenge:challenge]; 
} 

Если предположить, что тот же самый сертификат x509 будет представлен на том же сервере, мое тестирование показывает, что эффект этого метода кэшируется на время выполнения приложения. Этот метод снова не попадает.

Есть ли способ заставить приложение забыть эффект этого метода после того, как произошла обработка, так что последующие обращения к одной и той же веб-службе заставляют этот метод вызываться?

+0

У вас возникли проблемы с этой проблемой? Я сталкиваюсь с тем же, и этот делегат не получает вызова на последовательные вызовы на тот же веб-сервис даже после убийства/завершения приложения и перезапуска. – Maverick

+0

К сожалению, нет. Поскольку NSURLConnection устарел, с тех пор я обновил все до NSURLSession. NSURLSession не кэширует ответы, так что это уже не проблема для меня. С миграцией было всего несколько мелких проблем. Иначе это было удивительно безболезненно. –

+0

Спасибо за ваш ответ. Хорошо, я также попробую изменить NSURLConnection на NSURLSession. – Maverick

ответ

0

Я думаю, что использую [challenge.sender cancelAuthenticationChallenge: ...].

+0

Или rejectProtectionSpaceAndContinueWithChallenge :. –

+0

Ни один из них не работает. Идея состоит в том, чтобы не отменять проверку подлинности. Его следует обрабатывать должным образом, но обрабатывать каждый раз, когда есть проблема. –

Смежные вопросы