5

ここで行っているのは、認証されたURLを取得することです。したがって、私は関数を使用します

  - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;

認証に直面すると、UIAlertViewを提示してユーザー名とパスワードを入力し、ユーザーが正しく入力した場合、このメソッドが呼び出されます。

  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

この方法では、ログインウィンドウを非表示にして、詳細ビューを表示します。

ログアウト機能が必要なときに問題が発生しました。私が欲しいのは、authentication =の目的で、ユーザーが入力した資格情報を削除し、そのURLを再度取得することだけです。だから、私はdidReceiveAuthenticationChallengeを呼び出します。

しかし、何も聞かずに直接didReceiveResponseメソッドに移動します。ここでの問題は、クレデンシャルをクリアできないことです。これを行うのを手伝ってもらえますか?

よろしくお願いします!

4

3 に答える 3

7

リクエストの Cookie をクリアするためのコードを試す

NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
    NSString* domainName = [cookie domain];
    NSRange domainRange = [domainName rangeOfString:@"twitter"];
    if(domainRange.length > 0)
    {
        [storage deleteCookie:cookie];
    }
}
于 2011-09-01T09:29:46.753 に答える
3

すばらしい質問です。私の場合、Web ビューからログアウトできない理由がわかりませんでした。

最初の回答のコードをいくつか使用しましたが、特定の文字列または URL に関連付けられたものだけでなく、全体のすべての Cookie を削除したかったのです。これが私がしたことです:

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];

for (NSHTTPCookie *cookie in [cookieJar cookies]) {
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}

そして、これはうまくいきました!ログアウトすると、毎回元のログイン画面に戻ります。

于 2014-02-21T16:19:01.573 に答える