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