Reputation: 41
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
Reputation: 11
To clear the NSUserDefault:
NSString *domain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domain];
Upvotes: 0
Reputation: 18898
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) {
[storage deleteCookie:cookie];
}
Upvotes: 2