Мое настольное приложение подключается к веб-приложению, размещенному в Google App engine. Как только он аутентифицируется, он получает cookie authtoken, который он передает для всех будущих запросов. Это все работает.
Но теперь я хочу добавить "Выйти". Ive попытался реализовать Sign Out следующим образом:
- (void)signOut {
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:[NSURL URLWithString:self.serviceRootURLString]] copy] autorelease]) {
[cookieStorage deleteCookie:each];
}
[self clearCredentialStorage];
}
Проблема заключается в том, что она работает только в первый раз. Например, я могу открыть приложение. Войдите. Сделайте несколько запросов. Выход. Затем в следующий раз, когда я сделаю запрос, меня попросят снова подтвердить подлинность. Хорошо!
Но после того, как я аутентифицирую второй раз, проблема возникает. Аутентификация работает. Я получаю файл cookie authtoken. Я могу делать запросы. Но затем, когда я пытаюсь выйти во второй раз (без перезагрузки моего приложения), authtoken cookie, похоже, не удаляется. Это кажется удаленным с точки зрения моих приложений... Я прошу NSHTTPCookieStorage для файлов cookie, что у него есть мой URL, и он не возвращает ничего. Но если я попытаюсь сделать еще один запрос (который должен требовать файл cookie authtoken), запрос просто работает, я не получаю ответ 401, и меня больше не просят подтвердить подлинность.
Итак, если я правильно понимаю вещи, кажется, что файлы cookie удалены с моей точки зрения, но они не удалены из перспективы базового URL-адреса.
Возможный интерес, возможно, проблема связана с: http://www.macworld.com/article/143343/2009/10/safaricookieproblems.html
Кто-нибудь знает, как последовательно реализовать функцию "выхода из системы" в приложении, которое взаимодействует с веб-службой?
Спасибо, Джесси