Cookie をクリアすれば良かったんだ

NSURLConnection は Connection: close できない で NSURLConnection にダメ出ししてたけど「Cookie クリアすればセッション残らないよ」ってアドバイスもらった。しかもデモ付き。お手数かけました > 石○さん ^^;)

BASIC 認証の場合、Cookie に保存されたセッション情報がサーバに渡されると承認済みってことで認証ルート(NSURLConnexction -authenticationChallenge:withCredential:)が呼び出されなくなるんだけど、言い方を変えれば Cookie にセッション情報がないと認証ルートが呼び出される動作になる。

そーいうことで、サインアウトでこんなの仕込みました。

- (void)resetSession {
    NSString *serverURLString = @"http://my.service.com";
    NSURL *url = [NSURL URLWithString:serverURLString];
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray *cookiesArray = [cookieStorage cookiesForURL:url];
    for (NSHTTPCookie * cookie in cookiesArray) {
        [cookieStorage deleteCookie:cookie];
    }
}


サインアウト時にこのコード(↑)を仕込んでおくことで、次回ログイン時にちゃんと認証されるようになったよ。:-)