4

AFHTTPRequestOperationManagerサーバーからデータを取得するために使用しています。サーバーは基本認証を使用します。

ユーザーがアプリにログインすると、資格情報を次のように設定します。

manager.credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession];

そして、次のようなリクエストを行います。

[manager GET:address parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // ...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // ...
}];

リクエストを行うと、 のメソッドconnection:willSendRequestForAuthenticationChallenge:NSURLConnectionDelegate呼び出されます (メソッドは に実装されていAFURLConnectionOperationます)。

ユーザーがアプリからログアウトして再度ログインすると、ユーザー入力から資格情報を再度設定します。ただし、これが前回の成功した要求から 30 秒以内に発生した場合、資格情報は認証に送信されません (connection:willSendRequestForAuthenticationChallenge:呼び出されません)。これは、新しい認証情報がチェックされないため、間違っていても、ユーザーがログアウトしてログインできることを意味します。

少なくとも 30 秒待っても問題はないようです (資格情報がチェックされ、401 エラーが発生します)。

ユーザーがログアウトしているときに何らかの方法で資格情報をクリアする必要がありますか、それともすべて間違っていますか?

4

1 に答える 1