itwend
itwend

Reputation: 41

How to remove cookie data and userdefaults using sharedHTTPCookieStorage?

I have a registration and loginWithUserName method in APIManager.m. In the loginWithUserName method I set the cookies like so:

if ([[responseObject objectForKey:@"status_code"] isEqualToString:kStatusOk]) {
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    self.cookie = cookies[0];
    NSLog(@"%@", self.cookie);
    NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject:self.cookie];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:cookiesData forKey:@"savedCookie"];
    [defaults synchronize];
    NSLog(@"%@ \n\n\n RESPONSE OBJECT Obtained \n\n\n",responseObject);
    succes(responseObject);
} else {
    failure(responseObject);
}

and I have a method to load saved cookies (I use this method in my appDelegate after sign in or registration):

(BOOL) loadSavedAuthCookie {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *cookieData = [defaults dataForKey:@"savedCookie"];
    if (cookieData) {
        id cookie = [NSKeyedUnarchiver unarchiveObjectWithData:cookieData];
        if ([cookie isKindOfClass:[NSHTTPCookie class]]) {
            [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
            return YES;
        }
        else return NO;
    }
    else return NO;
}

I want to create a logout button and I need a method in my APIManager.m to delete cookies.

Upvotes: 3

Views: 667

Answers (2)

Sail
Sail

Reputation: 11

To clear the NSUserDefault:

NSString *domain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domain];

Upvotes: 0

Daniel Storm
Daniel Storm

Reputation: 18898

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

Upvotes: 2

Related Questions