Вопрос по objective-c, ios5, ios – iOS5: метод willSendRequestForAuthenticationChallenge работает рекурсивно

4

Я использую приведенный ниже код для аутентификации пользователя на удаленном сервере. Если я даю правильное имя пользователя и пароль, проблема не возникает, потому что происходит аутентификация, и я получаю ответ от сервера.

Но когда я даю неверные учетные данные, этот метод вызывается рекурсивно, поэтому я не могу его сломать.

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

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

    NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username"
                                                             password:@"password"
                                                          persistence:NSURLCredentialPersistenceForSession];
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];    
}

Ваш Ответ

2   ответа
5

Вам необходимо проверить количество ошибок и соответственно отменить запрос аутентификации:

if ([challenge previousFailureCount]) {
    [[challenge sender] cancelAuthenticationChallenge:challenge];
} else {
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
4

Попробуй это.

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
        {

        if ([challenge previousFailureCount] > 0) {
                // do something may be alert message
            } 
        else
        {

            NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username"
                                                                     password:@"password"
                                                                  persistence:NSURLCredentialPersistenceForSession];
            [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; 
        }

}
Введите два раза в поле «еще» утверждение ... как это возможно?

Похожие вопросы