Удаление NSURLCredential навсегда? - PullRequest
1 голос
/ 28 февраля 2012

Я пытаюсь удалить NSURLCredential, который записывается при доступе к безопасному сайту HTTP. Приведенный ниже код работает и удаляет NSURLCredential из NSURLCredentialStorage, но хотя я указываю, что:

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60];

не перезагружает кэшированные данные, и я реализовал метод:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
    return nil;
}

при следующем запуске приложения deleteStoredCredential находит новые учетные данные для «loginSiteName.com» и удаляет их. У меня вопрос: я что-то упустил, есть ли где-то еще, что мне нужно очистить, можно ли кэшировать учетные данные на iPhone?

-(void)deleteStoredCredential {
    NSURLCredentialStorage *sharedCredentialStorage = [NSURLCredentialStorage sharedCredentialStorage];
    NSDictionary *DICT_allProtectionSpaces = [sharedCredentialStorage allCredentials];
    // DICT KEY   = NSURLProtectionSpace
    // DICT VALUE = NSDictionary

    for(NSURLProtectionSpace *thisProtectionSpace in DICT_allProtectionSpaces) {
        if([[thisProtectionSpace host] isEqualToString:@"loginSiteName.com"]) {
            NSDictionary *DICT_allCredentials = [sharedCredentialStorage credentialsForProtectionSpace:thisProtectionSpace];
            // DICT KEY   = NSString (i.e. username)
            // DICT VALUE = NSURLCredential

            for(NSString *thisUserName in DICT_allCredentials) {
                NSURLCredential *credentialToDelete = [DICT_allCredentials valueForKey:thisUserName];
                NSLog(@"REMOVE UID: %@ WITH PWD: %@", [credentialToDelete user], [credentialToDelete password]);
                [sharedCredentialStorage removeCredential:credentialToDelete forProtectionSpace:thisProtectionSpace];
            }
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Я обнаружил проблему: NSURLCredential, который я создаю для доступа к сайту, был создан с NSURLCredentialPersistencePermanent вместо NSURLCredentialPersistenceNone. В результате учетные данные сохранялись в связке ключей iPhone.

0 голосов
/ 02 июля 2012

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

Замечали ли вы это странное поведение в классе NSURLConnection?

Спасибо за помощь:)

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