4

リモートサーバーでユーザーを認証するために以下のコードを使用しています。正しいユーザー名とパスワードを指定している場合、認証が行われ、サーバーからの応答を取得しているため、問題はありません。

しかし、間違った資格情報を与えると、このメソッドは再帰的に呼び出されるため、これを破ることはできません。

認証失敗の警告メッセージを表示できるように、これを破る方法を教えてください。

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

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

2 に答える 2

5

エラー数を確認し、認証チャレンジを適切にキャンセルする必要があります。

if ([challenge previousFailureCount]) {
    [[challenge sender] cancelAuthenticationChallenge:challenge];
} else {
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
于 2012-05-23T14:47:19.360 に答える
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]; 
        }

}
于 2012-05-23T14:54:34.480 に答える